lkml.org 
[lkml]   [2015]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH net] r8169: Fix sleeping function called during get_stats64
Corinna Vinschen <vinschen@redhat.com> :
[...]
> 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


\
 
 \ /
  Last update: 2015-09-09 22:41    [W:0.048 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site