diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index a4a4e98effdd..d31f9e600639 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -1646,25 +1646,22 @@ static int cxgbi_inet6addr_handler(struct notifier_block *this, struct cxgbi_device *cdev; int ret = NOTIFY_DONE; - rcu_read_lock(); - if (event_dev->priv_flags & IFF_802_1Q_VLAN) event_dev = vlan_dev_real_dev(event_dev); cdev = cxgbi_device_find_by_netdev(event_dev, NULL); - if (!cdev) { - rcu_read_unlock(); + + if (!cdev) return ret; - } + switch (event) { case NETDEV_UP: ret = cxgb4_clip_get(event_dev, (const struct in6_addr *) ((ifa)->addr.s6_addr)); - if (ret < 0) { - rcu_read_unlock(); + if (ret < 0) return ret; - } + ret = NOTIFY_OK; break; @@ -1679,7 +1676,6 @@ static int cxgbi_inet6addr_handler(struct notifier_block *this, break; } - rcu_read_unlock(); return ret; }