On Sep  4 22:59, Francois Romieu wrote:
> net/core/net-sysfs.c::netstat_show fetches statistics under dev_base_lock.
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=104031
> Fixes: 6e85d5ad36a2 ("r8169: Add values missing in @get_stats64 from HW 
> counters")
> Signed-off-by: Francois Romieu <rom...@fr.zoreil.com>
> Cc: Corinna Vinschen <vinsc...@redhat.com>
> ---
> 
>  Applies against davem's net as of f1ccbfce2fc787981d1182d09c1f6b67766783a8.
> 
>  drivers/net/ethernet/realtek/r8169.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/realtek/r8169.c 
> b/drivers/net/ethernet/realtek/r8169.c
> index 24dcbe6..56829ea 100644
> --- a/drivers/net/ethernet/realtek/r8169.c
> +++ b/drivers/net/ethernet/realtek/r8169.c
> @@ -2200,7 +2200,7 @@ static struct rtl8169_counters 
> *rtl8169_map_counters(struct net_device *dev,
>       struct rtl8169_counters *counters;
>       u32 cmd;
>  
> -     counters = dma_alloc_coherent(d, sizeof(*counters), paddr, GFP_KERNEL);
> +     counters = dma_alloc_coherent(d, sizeof(*counters), paddr, GFP_ATOMIC);
>       if (counters) {
>               RTL_W32(CounterAddrHigh, (u64)*paddr >> 32);
>               cmd = (u64)*paddr & DMA_BIT_MASK(32);
> -- 
> 2.4.3

I'll have a look tomorrow what I'm back to work, but for the time
being, two questions.

- The code worked for me in local testing without problem, so I'm rather
  puzzled.  How can I reproduce the problem?

- I'm pretty new to this stuff, so I don't understand this:

  The dma_alloc_coherent(...,GFP_KERNEL) call is not new in the code,
  it's there since at least 2010.  It appears to work fine in the
  context of @get_ethtool_stats.  Why does this not work in the context
  of @ndo_get_stats64?


Thanks,
Corinna

Attachment: pgpdO7Z2CLpTf.pgp
Description: PGP signature

Reply via email to