2016-04-12 11:46:55

by Sudip Mukherjee

[permalink] [raw]
Subject: [PATCH v2] mwifiex: fix possible NULL dereference

From: Sudip Mukherjee <[email protected]>

We have a check for card just after dereferencing it. So if it is NULL
we have already dereferenced it before its check. Lets dereference it
after checking card for NULL.

Signed-off-by: Sudip Mukherjee <[email protected]>
---
drivers/net/wireless/marvell/mwifiex/pcie.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
index edf8b07..d4db9db 100644
--- a/drivers/net/wireless/marvell/mwifiex/pcie.c
+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
@@ -2884,10 +2884,11 @@ static void mwifiex_unregister_dev(struct mwifiex_adapter *adapter)
{
struct pcie_service_card *card = adapter->card;
const struct mwifiex_pcie_card_reg *reg;
- struct pci_dev *pdev = card->dev;
int i;

if (card) {
+ struct pci_dev *pdev = card->dev;
+
if (card->msix_enable) {
for (i = 0; i < MWIFIEX_NUM_MSIX_VECTORS; i++)
synchronize_irq(card->msix_entries[i].vector);
--
1.9.1



2016-04-12 11:56:58

by Sudip Mukherjee

[permalink] [raw]
Subject: Re: [PATCH v2] mwifiex: fix possible NULL dereference

On Tuesday 12 April 2016 05:20 PM, Arend van Spriel wrote:
>
>
> On 12-04-16 13:46, Sudip Mukherjee wrote:
>> From: Sudip Mukherjee <[email protected]>
>>
>> We have a check for card just after dereferencing it. So if it is NULL
>> we have already dereferenced it before its check. Lets dereference it
>> after checking card for NULL.
>
> And you are changing the scope of the pdev variable.

yes, and since all usage of pdev is inside the "if" block so it should
not matter.

regards
sudip

>
> Regards,
> Arend
>
>> Signed-off-by: Sudip Mukherjee <[email protected]>
>> ---
>> drivers/net/wireless/marvell/mwifiex/pcie.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
>> index edf8b07..d4db9db 100644
>> --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
>> +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
>> @@ -2884,10 +2884,11 @@ static void mwifiex_unregister_dev(struct mwifiex_adapter *adapter)
>> {
>> struct pcie_service_card *card = adapter->card;
>> const struct mwifiex_pcie_card_reg *reg;
>> - struct pci_dev *pdev = card->dev;
>> int i;
>>
>> if (card) {
>> + struct pci_dev *pdev = card->dev;
>> +
>> if (card->msix_enable) {
>> for (i = 0; i < MWIFIEX_NUM_MSIX_VECTORS; i++)
>> synchronize_irq(card->msix_entries[i].vector);
>>


2016-04-12 11:50:47

by Arend Van Spriel

[permalink] [raw]
Subject: Re: [PATCH v2] mwifiex: fix possible NULL dereference



On 12-04-16 13:46, Sudip Mukherjee wrote:
> From: Sudip Mukherjee <[email protected]>
>
> We have a check for card just after dereferencing it. So if it is NULL
> we have already dereferenced it before its check. Lets dereference it
> after checking card for NULL.

And you are changing the scope of the pdev variable.

Regards,
Arend

> Signed-off-by: Sudip Mukherjee <[email protected]>
> ---
> drivers/net/wireless/marvell/mwifiex/pcie.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
> index edf8b07..d4db9db 100644
> --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
> +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
> @@ -2884,10 +2884,11 @@ static void mwifiex_unregister_dev(struct mwifiex_adapter *adapter)
> {
> struct pcie_service_card *card = adapter->card;
> const struct mwifiex_pcie_card_reg *reg;
> - struct pci_dev *pdev = card->dev;
> int i;
>
> if (card) {
> + struct pci_dev *pdev = card->dev;
> +
> if (card->msix_enable) {
> for (i = 0; i < MWIFIEX_NUM_MSIX_VECTORS; i++)
> synchronize_irq(card->msix_entries[i].vector);
>