Showing error 1666

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: 2457
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 07:54:05 UTC


Source:

2427                memcpy(bplist, dabuf->bps, nbuf * sizeof(*bplist));
2428        }
2429        xfs_da_buf_done(dabuf);
2430        for (i = 0; i < nbuf; i++)
2431                xfs_trans_brelse(tp, bplist[i]);
2432        if (bplist != &bp)
2433                kmem_free(bplist);
2434}
2435
2436/*
2437 * Invalidate dabuf from a transaction.
2438 */
2439void
2440xfs_da_binval(xfs_trans_t *tp, xfs_dabuf_t *dabuf)
2441{
2442        xfs_buf_t        *bp;
2443        xfs_buf_t        **bplist;
2444        int                i;
2445        int                nbuf;
2446
2447        ASSERT(dabuf->nbuf && dabuf->data && dabuf->bbcount && dabuf->bps[0]);
2448        if ((nbuf = dabuf->nbuf) == 1) {
2449                bplist = &bp;
2450                bp = dabuf->bps[0];
2451        } else {
2452                bplist = kmem_alloc(nbuf * sizeof(*bplist), KM_SLEEP);
2453                memcpy(bplist, dabuf->bps, nbuf * sizeof(*bplist));
2454        }
2455        xfs_da_buf_done(dabuf);
2456        for (i = 0; i < nbuf; i++)
2457                xfs_trans_binval(tp, bplist[i]);
2458        if (bplist != &bp)
2459                kmem_free(bplist);
2460}
2461
2462/*
2463 * Get the first daddr from a dabuf.
2464 */
2465xfs_daddr_t
2466xfs_da_blkno(xfs_dabuf_t *dabuf)
2467{
Show full sources