Showing error 1664

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


Source:

2237        }
2238        if (state->extravalid && state->extrablk.bp)
2239                xfs_da_buf_done(state->extrablk.bp);
2240#ifdef DEBUG
2241        memset((char *)state, 0, sizeof(*state));
2242#endif /* DEBUG */
2243        kmem_zone_free(xfs_da_state_zone, state);
2244}
2245
2246#ifdef XFS_DABUF_DEBUG
2247xfs_dabuf_t        *xfs_dabuf_global_list;
2248static DEFINE_SPINLOCK(xfs_dabuf_global_lock);
2249#endif
2250
2251/*
2252 * Create a dabuf.
2253 */
2254/* ARGSUSED */
2255STATIC xfs_dabuf_t *
2256xfs_da_buf_make(int nbuf, xfs_buf_t **bps, inst_t *ra)
2257{
2258        xfs_buf_t        *bp;
2259        xfs_dabuf_t        *dabuf;
2260        int                i;
2261        int                off;
2262
2263        if (nbuf == 1)
2264                dabuf = kmem_zone_alloc(xfs_dabuf_zone, KM_SLEEP);
2265        else
2266                dabuf = kmem_alloc(XFS_DA_BUF_SIZE(nbuf), KM_SLEEP);
2267        dabuf->dirty = 0;
2268#ifdef XFS_DABUF_DEBUG
2269        dabuf->ra = ra;
2270        dabuf->target = XFS_BUF_TARGET(bps[0]);
2271        dabuf->blkno = XFS_BUF_ADDR(bps[0]);
2272#endif
2273        if (nbuf == 1) {
2274                dabuf->nbuf = 1;
2275                bp = bps[0];
2276                dabuf->bbcount = (short)BTOBB(XFS_BUF_COUNT(bp));
2277                dabuf->data = XFS_BUF_PTR(bp);
Show full sources