]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
igb: Fix a deadlock in igb_sriov_reinit
authorJia-Ju Bai <baijiaju1990@163.com>
Mon, 3 Aug 2015 03:36:26 +0000 (11:36 +0800)
committerKirtikar Kashyap <kirtikar.kashyap@oracle.com>
Thu, 22 Jun 2017 21:28:29 +0000 (14:28 -0700)
When igb_init_interrupt_scheme in igb_sriov_reinit is failed, the lock
acquired by rtnl_lock() is not released, which causes a deadlock.
This patch adds rtnl_unlock() in error handling to fix it.

Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 3eb14ea8d9584e96680729c2c7a9129bafa13a39)

Orabug: 26325580

Signed-off-by: Kirtikar Kashyap <kirtikar.kashyap@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
drivers/net/ethernet/intel/igb/igb_main.c

index 41cc0befb0e130b6d3653ae7797735cac5160525..40211015649a533deb1ee72f39e287f2b38dd6c3 100644 (file)
@@ -7413,6 +7413,7 @@ static int igb_resume(struct device *dev)
 
        if (igb_init_interrupt_scheme(adapter, true)) {
                dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
+               rtnl_unlock();
                return -ENOMEM;
        }