Subject: Re: dev->get_stats(dev) in COMPAT_NET_DEV_OPS case

From: Oliver Hartkopp <[email-masked]>
Date: Thu, 08 Jan 2009 15:02:28 +0100

Ben Hutchings wrote:
> On Thu, 2009-01-08 at 14:12 +0100, Oliver Hartkopp wrote:
>   
>> Hello Stephen,
>>
>> in commit eeda3fd64f75bcbfaa70ce946513abaf3f23b8e0 ("netdev: introduce dev_get_stats()")
>> you remove the setting of dev->get_stats :
>>
>> @@ -4370,7  +4384,6 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
>>  
>>         netdev_init_queues(dev);
>>  
>> -       dev->get_stats = internal_stats;
>>         netpoll_netdev_init(dev);
>>         setup(dev);
>>         strcpy(dev->name, name);
>>
>> I really appreciate your introduction of COMPAT_NET_DEV_OPS but when i 
>> try to compile and run a non-converted driver, i get a NULL pointer 
>> dereference. I tracked it down to be the call of dev->get_stats(dev).
>>
>> Did you miss something or is this behaviour intended?
>>     
>
> You should be calling dev_get_stats() now.
>
>   

I noticed that myself and besides a warning (about the const / non-const 
definition) i got it working again.
But the question remains, if it still makes sense to provide 
dev->get_stats() (referencing to dev_get_stats()) in the 
COMPAT_NET_DEV_OPS case, as i would surely not be the only one tapping 
into this problem ...

Regards,
Oliver