linux/net/wireless
Johannes Berg d1d7f2310a cfg80211: wext: clear sinfo struct before calling driver
commit 9c5a18a31b upstream.

Until recently, mac80211 overwrote all the statistics it could
provide when getting called, but it now relies on the struct
having been zeroed by the caller. This was always the case in
nl80211, but wext used a static struct which could even cause
values from one device leak to another.

Using a static struct is OK (as even documented in a comment)
since the whole usage of this function and its return value is
always locked under RTNL. Not clearing the struct for calling
the driver has always been wrong though, since drivers were
free to only fill values they could report, so calling this
for one device and then for another would always have leaked
values from one to the other.

Fix this by initializing the structure in question before the
driver method call.

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=99691

Reported-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Reported-by: Alexander Kaltsas <alexkaltsas@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-06-22 17:01:23 -07:00
..
.gitignore wireless: support internal statically compiled regulatory database 2009-12-21 18:56:10 -05:00
ap.c cfg80211: Add support for QoS mapping 2013-12-19 16:29:22 +01:00
chan.c cfg80211: Fix 160 MHz channels with 80+80 and 160 MHz drivers 2015-01-27 08:18:55 -08:00
core.c cfg80211: remove racy beacon_interval assignment 2014-03-03 14:18:20 +01:00
core.h cfg80211: send scan results from work queue 2014-02-06 09:55:19 +01:00
db.txt wireless: support internal statically compiled regulatory database 2009-12-21 18:56:10 -05:00
debugfs.c mac80211: fix some snprintf misuses 2013-10-01 12:16:51 +02:00
debugfs.h cfg80211/mac80211: use debugfs_remove_recursive 2009-10-30 16:49:18 -04:00
ethtool.c ethtool: fix drvinfo strings set in drivers 2013-01-06 21:06:31 -08:00
ethtool.h net/wireless/ethtool.h: drop unnecessary include of linux/ethtool.h 2009-10-07 16:39:49 -04:00
genregdb.awk cfg80211: fix parsing when db.txt ends on a rule 2013-11-25 20:50:58 +01:00
ibss.c cfg80211: Add support for QoS mapping 2013-12-19 16:29:22 +01:00
Kconfig lib80211: hide Kconfig symbol 2012-11-16 14:29:09 -05:00
lib80211.c lib80211: remove exports for functions not called by other modules 2011-08-09 15:42:36 -04:00
lib80211_crypt_ccmp.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
lib80211_crypt_tkip.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
lib80211_crypt_wep.c hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
Makefile cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
mesh.c cfg80211: Add support for QoS mapping 2013-12-19 16:29:22 +01:00
mlme.c cfg80211: aggregate mgmt_tx parameters into a struct 2013-12-02 11:51:52 +01:00
nl80211.c nl80211: ignore HT/VHT capabilities without QoS/WMM 2015-04-13 14:03:00 +02:00
nl80211.h cfg80211: send scan results from work queue 2014-02-06 09:55:19 +01:00
radiotap.c radiotap: fix bitmap-end-finding buffer overrun 2013-12-16 12:06:43 +01:00
rdev-ops.h cfg80211: Add support for QoS mapping 2013-12-19 16:29:22 +01:00
reg.c cfg80211: avoid mem leak on driver hint set 2015-01-27 08:18:54 -08:00
reg.h cfg80211: add reg_get_dfs_region() 2013-12-03 13:53:40 +01:00
regdb.h cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
scan.c cfg80211: add cfg80211_sched_scan_stopped_rtnl 2014-06-07 10:28:10 -07:00
sme.c cfg80211: free sme on connection failures 2014-06-07 10:28:10 -07:00
sysfs.c net: wireless: convert class code to use dev_groups 2013-07-25 16:34:40 -07:00
sysfs.h net: misc: Remove extern from function prototypes 2013-10-19 19:12:11 -04:00
trace.c cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
trace.h cfg80211: fix mic_failure tracing 2014-08-07 14:52:36 -07:00
util.c cfg80211: Add a function to get the number of supported channels 2014-01-09 14:24:24 +01:00
wext-compat.c cfg80211: wext: clear sinfo struct before calling driver 2015-06-22 17:01:23 -07:00
wext-compat.h cfg80211: remove unused wext handler exports 2011-08-08 14:26:29 -04:00
wext-core.c wext: include wireless event id when it has a size problem 2012-09-05 16:12:44 +02:00
wext-priv.c wext: fix potential private ioctl memory content leak 2010-09-20 13:41:40 -04:00
wext-proc.c net: proc: change proc_net_remove to remove_proc_entry 2013-02-18 14:53:08 -05:00
wext-sme.c cfg80211: separate internal SME implementation 2013-06-04 13:03:11 +02:00
wext-spy.c wireless: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:19 -04:00