From: Doug Ledford Date: Sat, 23 Apr 2016 00:14:58 +0000 (-0400) Subject: IB/core: Fix oops in ib_cache_gid_set_default_gid X-Git-Tag: v4.6-rc6~7^2~16 X-Git-Url: http://git.cascardo.eti.br/?a=commitdiff_plain;h=f4e7de63ab273b6a5e35c82eb4fc6363c855ddd4;p=cascardo%2Flinux.git 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 --- diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index cb00d59da456..c2e257d97eff 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;