diff options
author | Doug Ledford <dledford@redhat.com> | 2016-04-23 00:14:58 (GMT) |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2016-04-23 00:14:58 (GMT) |
commit | d29c9ab1a2c81ce404883baba91e15ae35411900 (patch) | |
tree | e170603128cd3c866adb11a1407272fc153553d4 /drivers/infiniband | |
parent | 5f44abd041c5f3be76d57579ab254d78e601315b (diff) | |
download | linux-d29c9ab1a2c81ce404883baba91e15ae35411900.tar.xz |
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>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/core/cache.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index cb00d59..c2e257d 100644 --- a/drivers/infiniband/core/cache.c +++ b/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; |