On Sep 9 22:23, Francois Romieu wrote:
Corinna Vinschen [off-list ref] :
[...]
quoted
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
[...]
quoted
+ if (!paddr)
+ return false;
I guess this is the secret recipe.
Actually, no. I started out stress testing this combined with a printk
to show if paddr can be NULL, but this never occurs. ndo_get_stats64 is
apparently only called after registering the device, and this occurs
after calling dma_alloc_coherent in rtl_init_one.
Rather than removing the entire test, I acidentally only removed the
printk. Sorry about that.
[...]
quoted
@@ -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.
Thanks for catching! I'm sending a fixed patch in a minute, removing
the paddr test and setting rc to -ENOMEM if dma_alloc_coherent fails.
Corinna