For ROCEs ib_query_gid() takes a reference count on the net_device.
This reference count must be decreased by the caller.

Signed-off-by: Ursula Braun <ubr...@linux.vnet.ibm.com>
---
 net/smc/smc_core.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c
index 20b66e79c5d6..e93a31ec3cc2 100644
--- a/net/smc/smc_core.c
+++ b/net/smc/smc_core.c
@@ -380,10 +380,13 @@ static int smc_link_determine_gid(struct smc_link_group 
*lgr)
                if (ib_query_gid(lnk->smcibdev->ibdev, lnk->ibport, i, &gid,
                                 &gattr))
                        continue;
-               if (gattr.ndev &&
-                   (vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id)) {
-                       lnk->gid = gid;
-                       return 0;
+               if (gattr.ndev) {
+                       if (vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id) {
+                               lnk->gid = gid;
+                               dev_put(gattr.ndev);
+                               return 0;
+                       }
+                       dev_put(gattr.ndev);
                }
        }
        return -ENODEV;
-- 
2.13.5

Reply via email to