From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f68.google.com ([209.85.160.68]:41323 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752577AbeCUP0Y (ORCPT ); Wed, 21 Mar 2018 11:26:24 -0400 Received: by mail-pl0-f68.google.com with SMTP id b7-v6so3318777plr.8 for ; Wed, 21 Mar 2018 08:26:24 -0700 (PDT) Subject: Re: [PATCH net-next v4 2/2] net: bpf: add a test for skb_segment in test_bpf module To: Yonghong Song , edumazet@google.com, ast@fb.com, daniel@iogearbox.net, diptanu@fb.com, netdev@vger.kernel.org Cc: kernel-team@fb.com References: <20180321064722.1411857-1-yhs@fb.com> <20180321064722.1411857-3-yhs@fb.com> From: Eric Dumazet Message-ID: <435477a4-bf2d-f710-a1a0-f1957eb01f7a@gmail.com> Date: Wed, 21 Mar 2018 08:26:20 -0700 MIME-Version: 1.0 In-Reply-To: <20180321064722.1411857-3-yhs@fb.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org List-ID: On 03/20/2018 11:47 PM, Yonghong Song wrote: > +static __init int test_skb_segment(void) > +{ > + netdev_features_t features; > + struct sk_buff *skb; > + int ret = -1; > + > + features = NETIF_F_SG | NETIF_F_GSO_PARTIAL | NETIF_F_IP_CSUM | > + NETIF_F_IPV6_CSUM; > + features |= NETIF_F_RXCSUM; > + skb = build_test_skb(); > + if (!skb) { > + pr_info("%s: failed to build_test_skb", __func__); > + goto done; > + } > + > + if (skb_segment(skb, features)) { > + ret = 0; > + pr_info("%s: success in skb_segment!", __func__); > + } else { > + pr_info("%s: failed in skb_segment!", __func__); > + } > + kfree_skb(skb); If skb_segmen() was successful (original) skb was already freed. kfree_skb(old_skb) should thus panic the box, if you run this code on a kernel having some debugging features like KASAN So you must store in a variable the return of skb_segment(), to be able to free skb(s), using kfree_skb_list() > +done: > + return ret; > +} > +