]> git.hungrycats.org Git - linux/commitdiff
RDMA/ocrdma: fix double free on pd
authorColin Ian King <colin.king@canonical.com>
Fri, 5 Jun 2015 14:47:27 +0000 (15:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 3 Aug 2015 16:29:15 +0000 (09:29 -0700)
commit 4dc544427991e3cef38ce3ae124b7e6557063bd3 upstream.

A reorganisation of the PD allocation and deallocation in commit
9ba1377daa ("RDMA/ocrdma: Move PD resource management to driver.")
introduced a double free on pd, as detected by static analysis by
smatch:

drivers/infiniband/hw/ocrdma/ocrdma_verbs.c:682 ocrdma_alloc_pd()
  error: double free of 'pd'^

The original call to ocrdma_mbx_dealloc_pd() (which does not kfree
pd) was replaced with a call to _ocrdma_dealloc_pd() (which does
kfree pd).  The kfree following this call causes the double free,
so just remove it to fix the problem.

Fixes: 9ba1377daa ("RDMA/ocrdma: Move PD resource management to driver.")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-By: Devesh Sharma <devesh.sharma@avagotech.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index 9dcb66077d6cbf9cd37bdaaa594414aadee4c96f..219f2122f9b9612476207aae5f360baee17ea8c4 100644 (file)
@@ -679,7 +679,6 @@ err:
                ocrdma_release_ucontext_pd(uctx);
        } else {
                status = _ocrdma_dealloc_pd(dev, pd);
-               kfree(pd);
        }
 exit:
        return ERR_PTR(status);