Subject: Re: [PATCH 4/6] vlan: Optimize multiple unregistration

From: Patrick McHardy <[email-masked]>
Date: Thu, 29 Oct 2009 15:33:14 +0100

Eric Dumazet wrote:
> Patrick McHardy a écrit :
>> How about this? I moved the code back into vlan_device_event() since
>> its now only a very minimal change to the original code.
>>
>> vlan-orig.diff contains the diff between the original code and the
>> code after this patch for reference.
>>
>>
> 
> I have no problem with this solution, but I wonder why you re-added the curious
> 
> 			/* unregistration of last vlan destroys group, abort
> 			 * afterwards */
> 			if (grp->nr_vlans == 1)
> 				i = VLAN_GROUP_ARRAY_LEN;
> 
> 			unregister_vlan_dev(vlandev, &list);
> 
> while doing
> 
> 	unregister_vlan_dev(vlandev, &list);
> 	if (grp->nr_vlans == 0)
> 		break;
> 
> seems more natural :)

Indeed, but unregister_vlan_dev() destroys the group once the
count has reached zero, so we must not access it after that.