• Xin Long's avatar
    tipc: do not write skb_shinfo frags when doing decrytion · 3cf4375a
    Xin Long authored
    One skb's skb_shinfo frags are not writable, and they can be shared with
    other skbs' like by pskb_copy(). To write the frags may cause other skb's
    data crash.
    
    So before doing en/decryption, skb_cow_data() should always be called for
    a cloned or nonlinear skb if req dst is using the same sg as req src.
    While at it, the likely branch can be removed, as it will be covered
    by skb_cow_data().
    
    Note that esp_input() has the same issue, and I will fix it in another
    patch. tipc_aead_encrypt() doesn't have this issue, as it only processes
    linear data in the unlikely branch.
    
    Fixes: fc1b6d6d ("tipc: introduce TIPC encryption & authentication")
    Reported-by: default avatarShuang Li <shuali@redhat.com>
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Acked-by: default avatarJon Maloy <jmaloy@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3cf4375a
crypto.c 65.6 KB