From: Jia-Ju Bai Date: Mon, 3 Aug 2015 03:36:26 +0000 (+0800) Subject: igb: Fix a deadlock in igb_sriov_reinit X-Git-Tag: v4.1.12-105.0.20170622_2100~101 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0b73a3fdd2f9caee64690386945840fb21bf8278;p=users%2Fjedix%2Flinux-maple.git igb: Fix a deadlock in igb_sriov_reinit 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 Tested-by: Aaron Brown Signed-off-by: Jeff Kirsher (cherry picked from commit 3eb14ea8d9584e96680729c2c7a9129bafa13a39) Orabug: 26325580 Signed-off-by: Kirtikar Kashyap Reviewed-by: Jack Vogel --- diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 41cc0befb0e1..40211015649a 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -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; }