From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shards.monkeyblade.net ([184.105.139.130]:53710 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933502AbeCGQTA (ORCPT ); Wed, 7 Mar 2018 11:19:00 -0500 Date: Wed, 07 Mar 2018 11:18:58 -0500 (EST) Message-Id: <20180307.111858.1392479172536267510.davem@davemloft.net> To: alexey.kodanev@oracle.com Cc: netdev@vger.kernel.org, nhorman@tuxdriver.com, stephen@networkplumber.org, edumazet@google.com Subject: Re: [PATCH net v3] sch_netem: fix skb leak in netem_enqueue() From: David Miller In-Reply-To: <1520272374-25124-1-git-send-email-alexey.kodanev@oracle.com> References: <1520272374-25124-1-git-send-email-alexey.kodanev@oracle.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org List-ID: From: Alexey Kodanev Date: Mon, 5 Mar 2018 20:52:54 +0300 > When we exceed current packets limit and we have more than one > segment in the list returned by skb_gso_segment(), netem drops > only the first one, skipping the rest, hence kmemleak reports: ... > Fix it by adding the rest of the segments, if any, to skb 'to_free' > list. Add new __qdisc_drop_all() and qdisc_drop_all() functions > because they can be useful in the future if we need to drop segmented > GSO packets in other places. > > Fixes: 6071bd1aa13e ("netem: Segment GSO packets on enqueue") > Signed-off-by: Alexey Kodanev > --- > > v3: use skb->prev to find the tail of the list. skb->prev can be NULL > for not segmented skbs, so check it too. > > v2: add new __qdisc_drop_all() and qdisc_drop_all(), and use > qdisc_drop_all() in sch_netem. Applied and queued up for -stable, thanks!