IB/core: Eliminate sparse false context imbalance warning
authorMatan Barak <matanb@mellanox.com>
Wed, 30 Dec 2015 14:14:17 +0000 (16:14 +0200)
committerDoug Ledford <dledford@redhat.com>
Tue, 19 Jan 2016 20:26:21 +0000 (15:26 -0500)
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>
drivers/infiniband/core/cache.c

index 92cadbddbe49bc7309b40ded4b10019d1c94862d..53343ffbff7a1302b03ce5f6a66116b06f1e60b5 100644 (file)
@@ -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;