• Kees Cook's avatar
    mac80211: Use memset_after() to clear tx status · fb5f6a0e
    Kees Cook authored
    In preparation for FORTIFY_SOURCE performing compile-time and run-time
    field bounds checking for memset(), avoid intentionally writing across
    neighboring fields.
    
    Use memset_after() so memset() doesn't get confused about writing
    beyond the destination member that is intended to be the starting point
    of zeroing through the end of the struct.
    
    Additionally fix the common helper, ieee80211_tx_info_clear_status(),
    which was not clearing ack_signal, but the open-coded versions
    did. Johannes Berg points out this bug was introduced by commit
    e3e1a0bc ("mac80211: reduce IEEE80211_TX_MAX_RATES") but was harmless.
    
    Also drops the associated unneeded BUILD_BUG_ON()s, and adds a note to
    carl9170 about usage.
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Tested-by: Christian Lamparter <chunkeey@gmail.com> [both CARL9170+P54USB on real HW]
    Link: https://lore.kernel.org/r/20211118203839.1289276-1-keescook@chromium.orgSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    fb5f6a0e
tx.c 42.6 KB