Hello.

On 9/20/2016 2:39 PM, Tariq Toukan wrote:

From: Leon Romanovsky <leo...@mellanox.com>

Radix tree lookup can be performed without locking.

Fixes: 225c7b1feef1 ("IB/mlx4: Add a driver Mellanox ConnectX InfiniBand 
adapters")
Signed-off-by: Leon Romanovsky <leo...@mellanox.com>
Suggested-by: Sagi Grimberg <s...@grimberg.me>
Signed-off-by: Tariq Toukan <tar...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx4/srq.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/srq.c 
b/drivers/net/ethernet/mellanox/mlx4/srq.c
index 67146624eb58..f44d089e2ca6 100644
--- a/drivers/net/ethernet/mellanox/mlx4/srq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/srq.c
@@ -45,15 +45,12 @@ void mlx4_srq_event(struct mlx4_dev *dev, u32 srqn, int 
event_type)
        struct mlx4_srq_table *srq_table = &mlx4_priv(dev)->srq_table;
        struct mlx4_srq *srq;

-       spin_lock(&srq_table->lock);
-
+       rcu_read_lock();
        srq = radix_tree_lookup(&srq_table->tree, srqn & (dev->caps.num_srqs - 
1));
+       rcu_read_unlock();
        if (srq)
                atomic_inc(&srq->refcount);
-
-       spin_unlock(&srq_table->lock);
-
-       if (!srq) {
+       else {
                mlx4_warn(dev, "Async event for bogus SRQ %08x\n", srqn);
                return;
        }

CodingStyle: all branches of the *if* statement should have {} if at least one has.

[...]

MBR, Sergei

Reply via email to