| From fc81bab5eeb103711925d7510157cf5cd2b153f4 Mon Sep 17 00:00:00 2001 |
| From: Malcolm Priestley <tvboxspy@gmail.com> |
| Date: Sun, 30 Jul 2017 09:02:19 +0100 |
| Subject: rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter |
| |
| From: Malcolm Priestley <tvboxspy@gmail.com> |
| |
| commit fc81bab5eeb103711925d7510157cf5cd2b153f4 upstream. |
| |
| _rtl_pci_find_adapter fail path will jump to label fail3 for |
| unsupported adapter types. |
| |
| However, on course for fail3 there will be call rtl_deinit_core |
| before rtl_init_core. |
| |
| For the inclusion of checking pci_iounmap this fail can be moved to |
| fail2. |
| |
| Fixes |
| [ 4.492963] BUG: unable to handle kernel NULL pointer dereference at (null) |
| [ 4.493067] IP: rtl_deinit_core+0x31/0x90 [rtlwifi] |
| |
| Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/realtek/rtlwifi/pci.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/wireless/realtek/rtlwifi/pci.c |
| +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c |
| @@ -2269,7 +2269,7 @@ int rtl_pci_probe(struct pci_dev *pdev, |
| /* find adapter */ |
| if (!_rtl_pci_find_adapter(pdev, hw)) { |
| err = -ENODEV; |
| - goto fail3; |
| + goto fail2; |
| } |
| |
| /* Init IO handler */ |
| @@ -2339,10 +2339,10 @@ fail3: |
| pci_set_drvdata(pdev, NULL); |
| rtl_deinit_core(hw); |
| |
| +fail2: |
| if (rtlpriv->io.pci_mem_start != 0) |
| pci_iounmap(pdev, (void __iomem *)rtlpriv->io.pci_mem_start); |
| |
| -fail2: |
| pci_release_regions(pdev); |
| complete(&rtlpriv->firmware_loading_complete); |
| |