From d23239a29f566f4c73d1d871a6cf55da90a9fa8e Mon Sep 17 00:00:00 2001 From: Pravin B Shelar Date: Fri, 15 May 2015 06:27:35 -0700 Subject: [PATCH] datapath: backport kfree_skb_list() Signed-off-by: Pravin B Shelar Acked-by: Jesse Gross --- acinclude.m4 | 1 + datapath/linux/compat/include/linux/skbuff.h | 4 ++++ datapath/linux/compat/skbuff-openvswitch.c | 13 +++++++++++++ 3 files changed, 18 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index aab7df8c9..d09a73fc1 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -344,6 +344,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ # quoting rules. OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [[[^@]]proto_data_valid], [OVS_DEFINE([HAVE_PROTO_DATA_VALID])]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [kfree_skb_list]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [rxhash]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [u16.*rxhash], [OVS_DEFINE([HAVE_U16_RXHASH])]) diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index 0ae6c133f..1a576a00a 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -368,4 +368,8 @@ int rpl_skb_vlan_pop(struct sk_buff *skb); int rpl_skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci); #endif +#ifndef HAVE_KFREE_SKB_LIST +void rpl_kfree_skb_list(struct sk_buff *segs); +#define kfree_skb_list rpl_kfree_skb_list +#endif #endif diff --git a/datapath/linux/compat/skbuff-openvswitch.c b/datapath/linux/compat/skbuff-openvswitch.c index 3ecf1fe29..fad1cc7d0 100644 --- a/datapath/linux/compat/skbuff-openvswitch.c +++ b/datapath/linux/compat/skbuff-openvswitch.c @@ -267,3 +267,16 @@ int rpl_pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, EXPORT_SYMBOL(rpl_pskb_expand_head); #endif + +#ifndef HAVE_KFREE_SKB_LIST +void rpl_kfree_skb_list(struct sk_buff *segs) +{ + while (segs) { + struct sk_buff *next = segs->next; + + kfree_skb(segs); + segs = next; + } +} +EXPORT_SYMBOL(rpl_kfree_skb_list); +#endif -- 2.20.1