• Jarod Wilson's avatar
    bonding: fix feature flag setting at init time · 007ab534
    Jarod Wilson authored
    Don't try to adjust XFRM support flags if the bond device isn't yet
    registered. Bad things can currently happen when netdev_change_features()
    is called without having wanted_features fully filled in yet. This code
    runs both on post-module-load mode changes, as well as at module init
    time, and when run at module init time, it is before register_netdevice()
    has been called and filled in wanted_features. The empty wanted_features
    led to features also getting emptied out, which was definitely not the
    intended behavior, so prevent that from happening.
    
    Originally, I'd hoped to stop adjusting wanted_features at all in the
    bonding driver, as it's documented as being something only the network
    core should touch, but we actually do need to do this to properly update
    both the features and wanted_features fields when changing the bond type,
    or we get to a situation where ethtool sees:
    
        esp-hw-offload: off [requested on]
    
    I do think we should be using netdev_update_features instead of
    netdev_change_features here though, so we only send notifiers when the
    features actually changed.
    
    Fixes: a3b658cf ("bonding: allow xfrm offload setup post-module-load")
    Reported-by: default avatarIvan Vecera <ivecera@redhat.com>
    Suggested-by: default avatarIvan Vecera <ivecera@redhat.com>
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Link: https://lore.kernel.org/r/20201205172229.576587-1-jarod@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    007ab534
bonding.h 20.3 KB