Showing error 1672

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: fs/xfs/xfs_itable.c
Line in file: 874
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 07:54:05 UTC


Source:

844                        }
845                        cur = xfs_btree_init_cursor(mp, NULL, agbp, agno,
846                                XFS_BTNUM_INO, (xfs_inode_t *)0, 0);
847                        error = xfs_inobt_lookup_ge(cur, agino, 0, 0, &tmp);
848                        if (error) {
849                                xfs_btree_del_cursor(cur, XFS_BTREE_ERROR);
850                                cur = NULL;
851                                xfs_buf_relse(agbp);
852                                agbp = NULL;
853                                /*
854                                 * Move up the last inode in the current
855                                 * chunk.  The lookup_ge will always get
856                                 * us the first inode in the next chunk.
857                                 */
858                                agino += XFS_INODES_PER_CHUNK - 1;
859                                continue;
860                        }
861                }
862                if ((error = xfs_inobt_get_rec(cur, &gino, &gcnt, &gfree,
863                        &i)) ||
864                    i == 0) {
865                        xfs_buf_relse(agbp);
866                        agbp = NULL;
867                        xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR);
868                        cur = NULL;
869                        agno++;
870                        agino = 0;
871                        continue;
872                }
873                agino = gino + XFS_INODES_PER_CHUNK - 1;
874                buffer[bufidx].xi_startino = XFS_AGINO_TO_INO(mp, agno, gino);
875                buffer[bufidx].xi_alloccount = XFS_INODES_PER_CHUNK - gcnt;
876                buffer[bufidx].xi_allocmask = ~gfree;
877                bufidx++;
878                left--;
879                if (bufidx == bcount) {
880                        long written;
881                        if (formatter(ubuffer, buffer, bufidx, &written)) {
882                                error = XFS_ERROR(EFAULT);
883                                break;
884                        }
Show full sources