|
@@ -93,28 +93,6 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
|
|
|
}
|
|
|
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,
|
|
|
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);
|
|
|
if (greh->flags & GRE_CSUM) {
|
|
|
- if (check_checksum(skb)) {
|
|
|
+ if (skb_checksum_simple_validate(skb)) {
|
|
|
*csum_err = true;
|
|
|
return -EINVAL;
|
|
|
}
|