• Xin Long's avatar
    sctp: move the active_key update after sh_keys is added · ae954bbc
    Xin Long authored
    In commit 58acd100 ("sctp: update active_key for asoc when old key is
    being replaced"), sctp_auth_asoc_init_active_key() is called to update
    the active_key right after the old key is deleted and before the new key
    is added, and it caused that the active_key could be found with the key_id.
    
    In Ying Xu's testing, the BUG_ON in sctp_auth_asoc_init_active_key() was
    triggered:
    
      [ ] kernel BUG at net/sctp/auth.c:416!
      [ ] RIP: 0010:sctp_auth_asoc_init_active_key.part.8+0xe7/0xf0 [sctp]
      [ ] Call Trace:
      [ ]  sctp_auth_set_key+0x16d/0x1b0 [sctp]
      [ ]  sctp_setsockopt.part.33+0x1ba9/0x2bd0 [sctp]
      [ ]  __sys_setsockopt+0xd6/0x1d0
      [ ]  __x64_sys_setsockopt+0x20/0x30
      [ ]  do_syscall_64+0x5b/0x1a0
    
    So fix it by moving the active_key update after sh_keys is added.
    
    Fixes: 58acd100 ("sctp: update active_key for asoc when old key is being replaced")
    Reported-by: default avatarYing Xu <yinxu@redhat.com>
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ae954bbc
auth.c 26.6 KB