mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-12 16:19:53 +00:00
gre: Call skb_checksum_simple_validate
Use skb_checksum_simple_validate to verify checksum. Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1a91de2883
commit
b1036c6a47
@ -93,28 +93,6 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(gre_build_header);
|
EXPORT_SYMBOL_GPL(gre_build_header);
|
||||||
|
|
||||||
static __sum16 check_checksum(struct sk_buff *skb)
|
|
||||||
{
|
|
||||||
__sum16 csum = 0;
|
|
||||||
|
|
||||||
switch (skb->ip_summed) {
|
|
||||||
case CHECKSUM_COMPLETE:
|
|
||||||
csum = csum_fold(skb->csum);
|
|
||||||
|
|
||||||
if (!csum)
|
|
||||||
break;
|
|
||||||
/* Fall through. */
|
|
||||||
|
|
||||||
case CHECKSUM_NONE:
|
|
||||||
skb->csum = 0;
|
|
||||||
csum = __skb_checksum_complete(skb);
|
|
||||||
skb->ip_summed = CHECKSUM_COMPLETE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return csum;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
|
static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
|
||||||
bool *csum_err)
|
bool *csum_err)
|
||||||
{
|
{
|
||||||
@ -141,7 +119,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
|
|||||||
|
|
||||||
options = (__be32 *)(greh + 1);
|
options = (__be32 *)(greh + 1);
|
||||||
if (greh->flags & GRE_CSUM) {
|
if (greh->flags & GRE_CSUM) {
|
||||||
if (check_checksum(skb)) {
|
if (skb_checksum_simple_validate(skb)) {
|
||||||
*csum_err = true;
|
*csum_err = true;
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user