From patchwork Sun Oct 6 22:16:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 282046 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E43AC2C009C for ; Thu, 10 Oct 2013 08:20:10 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754967Ab3JIVUD (ORCPT ); Wed, 9 Oct 2013 17:20:03 -0400 Received: from mail-pd0-f177.google.com ([209.85.192.177]:43401 "EHLO mail-pd0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751500Ab3JIVUA convert rfc822-to-8bit (ORCPT ); Wed, 9 Oct 2013 17:20:00 -0400 Received: by mail-pd0-f177.google.com with SMTP id y10so1544896pdj.8 for ; Wed, 09 Oct 2013 14:19:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=NdNqQVh5vrdaJSYqvzpQLEUeOyvg9xmds1hZK1hSH0E=; b=gXE8F0S3zCyFECQDan5zSvF7INSf4Vd90fdxafL0skOyLGG0tgVloHLJdwvKuz1lHF XGVstrEU5us2XK9GiGv1LfmHt2pVN72KoXtjhDmnuRFyH1tTrTCbueFX3lGDU616cfl3 iEpL9cM8fIu7qtrH5iFGfh1WZOB574Y4O4vZmNdo8YfhXNeQQwGJEm78i6ijatappwvT QWSsTUvYCbyZj/GzaHaNqbn3dqt/msoNydlGnKbs3u4ic3jUzJ9IICKZpEmWABf0TJkx U9vM8prgMTVu8ur0JQ+tr6ttzYp94dvFCo/Zhz1RDdUMxl2/FpM8O5DCuz0ZZmuTtB1y LuOA== X-Gm-Message-State: ALoCoQmzG3HjRQMmTcs6EBZq2irGiX2mXpPspU7Gb9M89yUvSDpj5SDfq5NxuaqQHSDGDwwBt46b X-Received: by 10.66.243.196 with SMTP id xa4mr5069217pac.174.1381353599469; Wed, 09 Oct 2013 14:19:59 -0700 (PDT) Received: from nehalam.linuxnetplumber.net (static-50-53-83-51.bvtn.or.frontiernet.net. [50.53.83.51]) by mx.google.com with ESMTPSA id dq3sm48619666pbc.35.1969.12.31.16.00.00 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 09 Oct 2013 14:19:58 -0700 (PDT) Date: Sun, 6 Oct 2013 15:16:49 -0700 From: Stephen Hemminger To: Stephen Hemminger Cc: David Miller , Eric Dumazet , netdev@vger.kernel.org Subject: Re: [PATCH net] netem: free skb's in tree on reset Message-ID: <20131006151649.38038c0e@nehalam.linuxnetplumber.net> In-Reply-To: <20131006151533.52988624@nehalam.linuxnetplumber.net> References: <20131006151533.52988624@nehalam.linuxnetplumber.net> X-Mailer: Claws Mail 3.8.1 (GTK+ 2.24.10; x86_64-pc-linux-gnu) Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Netem can leak memory because packets get stored in red-black tree and it is not cleared on reset. Reported by: Сергеев Сергей Signed-off-by: Stephen Hemminger --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html --- a/net/sched/sch_netem.c 2013-10-06 15:10:03.957219532 -0700 +++ b/net/sched/sch_netem.c 2013-10-06 15:10:10.521150202 -0700 @@ -358,6 +358,21 @@ static psched_time_t packet_len_2_sched_ return PSCHED_NS2TICKS(ticks); } +static void tfifo_reset(struct Qdisc *sch) +{ + struct netem_sched_data *q = qdisc_priv(sch); + struct rb_node *p; + + while ((p = rb_first(&q->t_root)) { + struct sk_buff *skb = netem_rb_to_skb(p); + + rb_erase(p, &q->t_root); + skb->next = NULL; + skb->prev = NULL; + kfree_skb(skb); + } +} + static void tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch) { struct netem_sched_data *q = qdisc_priv(sch); @@ -610,6 +625,7 @@ static void netem_reset(struct Qdisc *sc struct netem_sched_data *q = qdisc_priv(sch); qdisc_reset_queue(sch); + tfifo_reset(sch); if (q->qdisc) qdisc_reset(q->qdisc); qdisc_watchdog_cancel(&q->watchdog);