From: Michal Ostrowski <[EMAIL PROTECTED]> Date: Tue, 13 Mar 2007 09:09:35 -0500
> pppoe_flush_dev() kicks all sockets bound to a device that is going down. > In doing so, locks must be taken in the right order consistently (sock lock, > followed by the pppoe_hash_lock). However, the scan process is based on > us holding the sock lock. So, when something is found in the scan we must > release the lock we're holding and grab the sock lock. > > This patch fixes race conditions between this code and pppoe_release(), > both of which perform similar functions but would naturally prefer to grab > locks in opposing orders. Both code paths are now going after these locks > in a consistent manner. > > pppoe_hash_lock protects the contents of the "pppox_sock" objects that reside > inside the hash. Thus, NULL'ing out the pppoe_dev field should be done > under the protection of this lock. > > Signed-off-by: Michal Ostrowski <[EMAIL PROTECTED]> Aha, this one applies cleanly :-) But I had to edit out some trailing whitespace this patch added, please be mindful of this in the future, thanks! Adds trailing whitespace. diff:48: Adds trailing whitespace. diff:52: * hold the sock lock while doing any unbinding, Adds trailing whitespace. diff:53: * we need to release the lock we're holding. Adds trailing whitespace. diff:81: Adds trailing whitespace. diff:121: __delete_item(po->pppoe_pa.sid, warning: 5 lines add trailing whitespaces. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html