• Jarod Wilson's avatar
    bonding: deal with xfrm state in all modes and add more error-checking · 5cd24cbe
    Jarod Wilson authored
    It's possible that device removal happens when the bond is in non-AB mode,
    and addition happens in AB mode, so bond_ipsec_del_sa() never gets called,
    which leaves security associations in an odd state if bond_ipsec_add_sa()
    then gets called after switching the bond into AB. Just call add and
    delete universally for all modes to keep things consistent.
    
    However, it's also possible that this code gets called when the system is
    shutting down, and the xfrm subsystem has already been disconnected from
    the bond device, so we need to do some error-checking and bail, lest we
    hit a null ptr deref.
    
    Fixes: a3b658cf ("bonding: allow xfrm offload setup post-module-load")
    CC: Huy Nguyen <huyn@mellanox.com>
    CC: Saeed Mahameed <saeedm@mellanox.com>
    CC: Jay Vosburgh <j.vosburgh@gmail.com>
    CC: Veaceslav Falico <vfalico@gmail.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    CC: "David S. Miller" <davem@davemloft.net>
    CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    CC: Jakub Kicinski <kuba@kernel.org>
    CC: Steffen Klassert <steffen.klassert@secunet.com>
    CC: Herbert Xu <herbert@gondor.apana.org.au>
    CC: netdev@vger.kernel.org
    CC: intel-wired-lan@lists.osuosl.org
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5cd24cbe
bond_main.c 146 KB