aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorMatan Barak <matanb@mellanox.com>2015-12-30 16:14:17 +0200
committerDoug Ledford <dledford@redhat.com>2016-01-19 15:26:21 -0500
commit2e2cdace5a26507a564d319a1338920a838ef52e (patch)
tree7cc9986a83bbb35f3ae4f60de75ac1f0013c4036 /drivers/infiniband
parentIB/core: sysfs.c: Fix PerfMgt ClassPortInfo handling (diff)
downloadlinux-dev-2e2cdace5a26507a564d319a1338920a838ef52e.tar.xz
linux-dev-2e2cdace5a26507a564d319a1338920a838ef52e.zip
IB/core: Eliminate sparse false context imbalance warning
When write_gid function needs to do a sleep-able operation, it unlocks table->rwlock and then relocks it. Sparse complains about context imbalance. This is safe as write_gid is always called with table->rwlock. write_gid protects from simultaneous writes to this GID entry by setting the GID_TABLE_ENTRY_INVALID flag. Fixes: 9c584f049596 ('IB/core: Change per-entry lock in RoCE GID table to one lock') Signed-off-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/cache.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index 92cadbddbe49..53343ffbff7a 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c
@@ -174,6 +174,7 @@ static int write_gid(struct ib_device *ib_dev, u8 port,
const struct ib_gid_attr *attr,
enum gid_table_write_action action,
bool default_gid)
+ __releases(&table->rwlock) __acquires(&table->rwlock)
{
int ret = 0;
struct net_device *old_net_dev;