netfilter: ip6t_NPT: Fix adjustment calculation
authorYOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org>
Sat, 26 Jan 2013 08:37:48 +0000 (08:37 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 7 Feb 2013 17:37:41 +0000 (18:37 +0100)
commitf5271fff56c76e92fde122bcc02f102e99da5c8a
tree88e0f58ea00fbc4f8652f92d915b40403aa38f3e
parent4b47bc9a9e69141ed3a854c57601f548e82c78ba
netfilter: ip6t_NPT: Fix adjustment calculation

Cast __wsum from/to __sum16 is wrong.  Instead, apply appropriate
conversion function: csum_unfold() or csum_fold().

[ The original patch has been modified to undo the final ~ that
  csum_fold returns. We only need to fold the 32-bit word that
  results from the checksum calculation into a 16-bit to ensure
  that the original subnet is restored appropriately. Spotted by
  Ulrich Weber. ]

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv6/netfilter/ip6t_NPT.c