sctp: get sctphdr by offset in sctp_compute_cksum
authorXin Long <lucien.xin@gmail.com>
Mon, 18 Mar 2019 11:47:00 +0000 (19:47 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 13 Aug 2019 11:38:44 +0000 (12:38 +0100)
commit3ef66b61b37b5e28dad11f3c3937f8be647e0e07
treefc7df4ab6cdf4dae0983ebf8b1062a3b4cb44862
parent7e8343060fc2f97a50bd64dd373fbe27939ba5bb
sctp: get sctphdr by offset in sctp_compute_cksum

commit 273160ffc6b993c7c91627f5a84799c66dfe4dee upstream.

sctp_hdr(skb) only works when skb->transport_header is set properly.

But in Netfilter, skb->transport_header for ipv6 is not guaranteed
to be right value for sctphdr. It would cause to fail to check the
checksum for sctp packets.

So fix it by using offset, which is always right in all places.

v1->v2:
  - Fix the changelog.

Fixes: e6d8b64b34aa ("net: sctp: fix and consolidate SCTP checksumming code")
Reported-by: Li Shuang <shuali@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
include/net/sctp/checksum.h