IB: cxgb3: delay freeing mem untill entirely done with it
authorJesper Juhl <jj@chaosbits.net>
Mon, 14 Jan 2013 19:34:09 +0000 (20:34 +0100)
committerJiri Kosina <jkosina@suse.cz>
Tue, 29 Jan 2013 09:52:20 +0000 (10:52 +0100)
Sure, it's just the pointer value we use, but the coverity checker
complains about a use-after-free bug and it really does seem cleaner
to delay freeing until we are entirely done with the memory. So,
rearrange the code to move the kfree() later untill we are completely
done.
Trivial and harmless, but nice IMHO.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/infiniband/hw/cxgb3/iwch_provider.c

index 0bdf09aa6f4213466cda00994ed7a4d833981670..145d82a64d0af8bf18d4caf89fa968ea28832f52 100644 (file)
@@ -783,8 +783,8 @@ static int iwch_dealloc_mw(struct ib_mw *mw)
        mmid = (mw->rkey) >> 8;
        cxio_deallocate_window(&rhp->rdev, mhp->attr.stag);
        remove_handle(rhp, &rhp->mmidr, mmid);
-       kfree(mhp);
        PDBG("%s ib_mw %p mmid 0x%x ptr %p\n", __func__, mw, mmid, mhp);
+       kfree(mhp);
        return 0;
 }