• Johannes Berg's avatar
    netlink: fix netlink_ack() extack race · 48044eb4
    Johannes Berg authored
    It seems that it's possible to toggle NETLINK_F_EXT_ACK
    through setsockopt() while another thread/CPU is building
    a message inside netlink_ack(), which could then trigger
    the WARN_ON()s I added since if it goes from being turned
    off to being turned on between allocating and filling the
    message, the skb could end up being too small.
    
    Avoid this whole situation by storing the value of this
    flag in a separate variable and using that throughout the
    function instead.
    
    Fixes: 2d4bc933 ("netlink: extended ACK reporting")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    48044eb4
af_netlink.c 63.6 KB