Browse Source

IB/core: Fix oops in ib_cache_gid_set_default_gid

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>
Doug Ledford 9 years ago
parent
commit
f4e7de63ab
1 changed files with 2 additions and 1 deletions
  1. 2 1
      drivers/infiniband/core/cache.c

+ 2 - 1
drivers/infiniband/core/cache.c

@@ -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;