diff options
author | Bart Van Assche <bart.vanassche@sandisk.com> | 2015-11-20 22:04:12 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2015-12-08 20:14:43 +0300 |
commit | d3632493c70b6a866a77264cd8cfdeb89958b906 (patch) | |
tree | 5413e996b53a1a1aeaf98440b5ab672a4260084f /drivers/infiniband/core | |
parent | 8f5ba10ed40a9d3ffe84854984227d011a7428bd (diff) | |
download | linux-d3632493c70b6a866a77264cd8cfdeb89958b906.tar.xz |
IB/cma: Add a missing rcu_read_unlock()
Ensure that validate_ipv4_net_dev() calls rcu_read_unlock() if
fib_lookup() fails. Detected by sparse. Compile-tested only.
Fixes: "IB/cma: Validate routing of incoming requests" (commit f887f2ac87c2).
Cc: Haggai Eran <haggaie@mellanox.com>
Cc: stable <stable@vger.kernel.org>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Haggai Eran <haggaie@mellanox.com>
Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/core')
-rw-r--r-- | drivers/infiniband/core/cma.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 944cd90417bc..d2d5d004f16d 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -1126,10 +1126,7 @@ static bool validate_ipv4_net_dev(struct net_device *net_dev, rcu_read_lock(); err = fib_lookup(dev_net(net_dev), &fl4, &res, 0); - if (err) - return false; - - ret = FIB_RES_DEV(res) == net_dev; + ret = err == 0 && FIB_RES_DEV(res) == net_dev; rcu_read_unlock(); return ret; |