IB/core: Fix oops in ib_cache_gid_set_default_gid
authorDoug Ledford <dledford@redhat.com>
Sat, 23 Apr 2016 00:14:58 +0000 (20:14 -0400)
committerDoug Ledford <dledford@redhat.com>
Sat, 23 Apr 2016 00:14:58 +0000 (20:14 -0400)
When we fail to find the default gid index, we can't continue
processing in this routine or else we will pass a negative
index to later routines resulting in invalid memory access
attempts and a kernel oops.

Fixes: 03db3a2d81e6 (IB/core: Add RoCE GID table management)
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/cache.c

index cb00d59da45616af57a03f29454434ec50fa9826..c2e257d97effb9813ef22b58ab580507dbf4134d 100644 (file)
@@ -691,7 +691,8 @@ void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port,
                              NULL);
 
                /* Coudn't find default GID location */
-               WARN_ON(ix < 0);
+               if (WARN_ON(ix < 0))
+                       goto release;
 
                zattr_type.gid_type = gid_type;