On Sun, May 10, 2009 at 01:00:17PM +0200, Johannes Berg wrote: > Currently, get_wireless_stats is racy by _design_. This is > because it returns a buffer, which needs to be statically > allocated since it cannot be freed if it was allocated > dynamically. Also, SIOCGIWSTATS and /proc/net/wireless use > no common lock, and /proc/net/wireless accesses are not > synchronised against each other. This is a design flaw in > get_wireless_stats since the beginning. > > This patch fixes it by wrapping /proc/net/wireless accesses > with the RTNL so they are protected against each other and > SIOCGIWSTATS. The more correct method of fixing this would > be to pass in the buffer instead of returning it and have > the caller take care of synchronisation of the buffer, but > even then most drivers probably assume that their callback > is protected by the RTNL like all other wext callbacks. > > Signed-off-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Is it acceptable to hold rtnl between ->open and ->release? John -- John W. Linville Someday the world will need a hero, and you linville@xxxxxxxxxxxxx might be all we have. Be ready. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html