diff options
| author | Larry Finger <Larry.Finger@lwfinger.net> | 2013-12-12 03:13:10 +0400 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2013-12-17 22:58:25 +0400 | 
| commit | 9278db6279e28d4d433bc8a848e10b4ece8793ed (patch) | |
| tree | 0d16d667bfe95e1247dec8dc677bcc4257057f7a /drivers/net/wireless/rtlwifi/pci.c | |
| parent | 657eb17d87852c42b55c4b06d5425baa08b2ddb3 (diff) | |
| download | linux-9278db6279e28d4d433bc8a848e10b4ece8793ed.tar.xz | |
rtlwifi: pci: Fix oops on driver unload
On Fedora systems, unloading rtl8192ce causes an oops. This patch fixes the
problem reported at https://bugzilla.redhat.com/show_bug.cgi?id=852761.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtlwifi/pci.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 0f494444bcd1..5a53195d016b 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c @@ -740,6 +740,8 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)  	};  	int index = rtlpci->rx_ring[rx_queue_idx].idx; +	if (rtlpci->driver_is_goingto_unload) +		return;  	/*RX NORMAL PKT */  	while (count--) {  		/*rx descriptor */ @@ -1636,6 +1638,7 @@ static void rtl_pci_stop(struct ieee80211_hw *hw)  	 */  	set_hal_stop(rtlhal); +	rtlpci->driver_is_goingto_unload = true;  	rtlpriv->cfg->ops->disable_interrupt(hw);  	cancel_work_sync(&rtlpriv->works.lps_change_work); @@ -1653,7 +1656,6 @@ static void rtl_pci_stop(struct ieee80211_hw *hw)  	ppsc->rfchange_inprogress = true;  	spin_unlock_irqrestore(&rtlpriv->locks.rf_ps_lock, flags); -	rtlpci->driver_is_goingto_unload = true;  	rtlpriv->cfg->ops->hw_disable(hw);  	/* some things are not needed if firmware not available */  	if (!rtlpriv->max_fw_size)  | 
