Re: [PATCH net] r8169: Fix sleeping function called during get_stats64

From: Francois Romieu
Date: Wed Sep 09 2015 - 16:25:24 EST


Corinna Vinschen <vinschen@xxxxxxxxxx> :
[...]
> diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
> index 24dcbe6..630811a 100644
> --- a/drivers/net/ethernet/realtek/r8169.c
> +++ b/drivers/net/ethernet/realtek/r8169.c
[...]
> + if (!paddr)
> + return false;

I guess this is the secret recipe.

What about replacing this part with an adequate barrier in rtl_init_one ?

[...]
> @@ -8447,9 +8411,14 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> tp->rtl_fw = RTL_FIRMWARE_UNKNOWN;
>
> + tp->CntArray = dma_alloc_coherent (&pdev->dev, sizeof(*tp->CntArray),
> + &tp->CntPhysAddr, GFP_KERNEL);
> + if (!tp->CntArray)
> + goto err_out_cnt_4;
> +

rc is still zero here so rtl_init_one will return success.

> rc = register_netdev(dev);
> if (rc < 0)
> - goto err_out_msi_4;
> + goto err_out_msi_5;
>
> pci_set_drvdata(pdev, dev);

--
Ueimor
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/