mac80211: initialize sinfo in cfg80211_get_station
authorSven Eckelmann <sven.eckelmann@openmesh.com>
Wed, 6 Jun 2018 09:21:53 +0000 (11:21 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Sun, 8 Jul 2018 21:22:17 +0000 (23:22 +0200)
commitb84a07b3803bd39d0a1eb1b040718a023b8f7971
tree83fc279cf1afaadf8deeac66c3eebe3bee6102a6
parent6258c965a04498a69e44b9c2173aa98b5ba21283
mac80211: initialize sinfo in cfg80211_get_station

Most of the implementations behind cfg80211_get_station will not initialize
sinfo to zero before manipulating it. For example, the member "filled",
which indicates the filled in parts of this struct, is often only modified
by enabling certain bits in the bitfield while keeping the remaining bits
in their original state. A caller without a preinitialized sinfo.filled can
then no longer decide which parts of sinfo were filled in by
cfg80211_get_station (or actually the underlying implementations).

cfg80211_get_station must therefore take care that sinfo is initialized to
zero. Otherwise, the caller may tries to read information which was not
filled in and which must therefore also be considered uninitialized. In
batadv_v_elp_get_throughput's case, an invalid "random" expected throughput
may be stored for this neighbor and thus the B.A.T.M.A.N V algorithm may
switch to non-optimal neighbors for certain destinations.

Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
(cherry picked from commit 87493dac11f3c7bbbc1fed9aef1cf9ff62053ab0)
package/kernel/mac80211/patches/379-cfg80211-initialize-sinfo-in-cfg80211_get_station.patch [new file with mode: 0644]