lkml.org 
[lkml]   [2017]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 060/106] net: add kfree_skb_list()
    3.2.93-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ben Hutchings <ben@decadent.org.uk>

    Extracted from upstream commit bd8a7036c06c "gre: fix a possible skb leak".

    This patch adds a kfree_skb_list() helper.

    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    --- a/include/linux/skbuff.h
    +++ b/include/linux/skbuff.h
    @@ -534,6 +534,7 @@ static inline struct rtable *skb_rtable(
    }

    extern void kfree_skb(struct sk_buff *skb);
    +extern void kfree_skb_list(struct sk_buff *segs);
    extern void consume_skb(struct sk_buff *skb);
    extern void __kfree_skb(struct sk_buff *skb);
    extern struct sk_buff *__alloc_skb(unsigned int size,
    --- a/net/core/skbuff.c
    +++ b/net/core/skbuff.c
    @@ -277,15 +277,8 @@ EXPORT_SYMBOL(dev_alloc_skb);

    static void skb_drop_list(struct sk_buff **listp)
    {
    - struct sk_buff *list = *listp;
    -
    + kfree_skb_list(*listp);
    *listp = NULL;
    -
    - do {
    - struct sk_buff *this = list;
    - list = list->next;
    - kfree_skb(this);
    - } while (list);
    }

    static inline void skb_drop_fraglist(struct sk_buff *skb)
    @@ -436,6 +429,17 @@ void kfree_skb(struct sk_buff *skb)
    }
    EXPORT_SYMBOL(kfree_skb);

    +void kfree_skb_list(struct sk_buff *segs)
    +{
    + while (segs) {
    + struct sk_buff *next = segs->next;
    +
    + kfree_skb(segs);
    + segs = next;
    + }
    +}
    +EXPORT_SYMBOL(kfree_skb_list);
    +
    /**
    * consume_skb - free an skbuff
    * @skb: buffer to free
    \
     
     \ /
      Last update: 2017-09-10 00:50    [W:4.081 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site