From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f65.google.com ([209.85.160.65]:36793 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752200AbeCUPDs (ORCPT ); Wed, 21 Mar 2018 11:03:48 -0400 Received: by mail-pl0-f65.google.com with SMTP id 61-v6so3284683plf.3 for ; Wed, 21 Mar 2018 08:03:48 -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: <7ef820fa-71e1-b479-cfe4-affd230ef143@gmail.com> Date: Wed, 21 Mar 2018 08:03:44 -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__); > + } If skb_segmen() was successful 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 if you do not store in a variable the return of skb_segment(), you can not properly free memory. > + kfree_skb(skb); > +done: > + return ret; > +} > + > Please make sure to fully test this code.