Subject: Re: [PATCH] net: Updates to netif_index_is_vrf

From: David Ahern <[email-masked]>
Date: Sun, 16 Aug 2015 07:34:12 -0600

On 8/15/15 6:39 PM, Florian Westphal wrote:
> David Ahern <[email-masked]> wrote:
>> As Eric noted netif_index_is_vrf is not called with rcu_read_lock held,
>> so use dev_get_by_index instead of dev_get_by_index_rcu.
>>
>> If VRF is not enabled or oif is 0 skip the device lookup.
>>
>> Signed-off-by: David Ahern <[email-masked]>
>
> Why not
>
>>   static inline bool netif_index_is_vrf(struct net *net, int ifindex)
>>   {
>> -	struct net_device *dev = dev_get_by_index_rcu(net, ifindex);
>>   	bool rc = false;
>>
>> -	if (dev)
>> -		rc = netif_is_vrf(dev);
>> +#if IS_ENABLED(CONFIG_NET_VRF)
>> +	struct net_device *dev;
>> +
>> +	if (ifindex == 0)
>> +		return false;
>
> 	rcu_read_lock();
>
> 	dev = dev_get_by_index_rcu(net, ifindex);
> 	if (dev)
> 		rc = netif_is_vrf(dev);
>
> 	rcu_read_unlock();
>
>> +#endif
>>   	return rc;
>
> instead?

sure. That saves the inc and dec on the refcnt. will respin.

David