From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91B1AC43387 for ; Wed, 16 Jan 2019 15:33:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 61D3C20859 for ; Wed, 16 Jan 2019 15:33:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="G5iZa8H8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404921AbfAPPdL (ORCPT ); Wed, 16 Jan 2019 10:33:11 -0500 Received: from mail-wm1-f67.google.com ([209.85.128.67]:37630 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404917AbfAPPdJ (ORCPT ); Wed, 16 Jan 2019 10:33:09 -0500 Received: by mail-wm1-f67.google.com with SMTP id g67so2440657wmd.2 for ; Wed, 16 Jan 2019 07:33:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=1q4D0tHE4lFMseQmvtcfESCW3AmJ1EH1YZcjNk8C1/8=; b=G5iZa8H8LDoToTTL3eAoykmO04/zZiKlU9kxFyrh4u1Zxiia5UkP3k6MB6A8DMbV6l vl+PfoC68ZxfACb2NyKS7/cItYUONVAAOCvcmXhu3AXW9zpkYR3gUPcICoxs97pIxfsu a0bCtChXb3Py+M+12RGJ0Bcp803UUVg5GfvIo74Yy3Vn9MamYki3qZ8VSfLlrSwDykNh h96NCjRwc8J9bE+GyCSIT6qeU6D8kTM8F9cEIbyfF8QsQE/MBH5T32bgZkBg5ivwcvvz mGSKkTlZabPA5Gyjqpgkae/H+onfpUr7b6Q/958U9+M3b6zn0n1Bmw3f5EfpQqXK8Ubc opNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=1q4D0tHE4lFMseQmvtcfESCW3AmJ1EH1YZcjNk8C1/8=; b=FMIc87VJYJnJ+6Ai3wfompS5NGEwRa5nqaHLO3LnkuAli90I92LMTlKHLFOICCijTU /Y9yDWJaodk4iDgfioDkwzE3FWR4/EixGJR6LSeFHDe7A6EDBf4+IOTA/jwNBKiH2C05 I//wAiZ/FU/dvZLA1tEywQZO0N+WP+4v+PAqAwiRk8G2KHm84hzCljGftnhEkz0q6EdP PSIDfLUpt7gk9mwira8ardTdM9U8+yQNKgbYBJCwF9+mXVtQcUsclkFHZI+sy7xAO6ZR 0a0UHH77O5teyhYDVCOvWjy6Qnl7zOsfJPhlLCEDGguGRovwAuw2A7y9GpFv7tbx9ucU ezTw== X-Gm-Message-State: AJcUukcz6BYbU+vPnBNTp255ov9IHxoXvUyjkG6YtFIlkRGoPyCkndQe nLVuD4V3NayfyVUOFJB11Oy67A== X-Google-Smtp-Source: ALg8bN4LhjT2mIb4BOBxEa7geqrEIvV8Wtk0gI/NYOo84S4hUVw7QcfchTzpmu4ekrAxGzDtiNAsmg== X-Received: by 2002:a1c:6e01:: with SMTP id j1mr7795800wmc.103.1547652787345; Wed, 16 Jan 2019 07:33:07 -0800 (PST) Received: from localhost (ip-89-177-6-176.net.upcbroadband.cz. [89.177.6.176]) by smtp.gmail.com with ESMTPSA id w80sm47974251wme.38.2019.01.16.07.33.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 16 Jan 2019 07:33:06 -0800 (PST) Date: Wed, 16 Jan 2019 16:24:36 +0100 From: Jiri Pirko To: Ivan Vecera Cc: netdev@vger.kernel.org, Petr Oros , Paul Blakey Subject: Re: [PATCH net] net/sched: cls_flower: allocate mask dynamically in fl_change() Message-ID: <20190116152436.GJ5265@nanopsycho> References: <20190116150210.12357-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190116150210.12357-1-ivecera@redhat.com> User-Agent: Mutt/1.9.5 (2018-04-13) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Wed, Jan 16, 2019 at 04:02:10PM CET, ivecera@redhat.com wrote: >Recent changes (especially 05cd271fd61a ("cls_flower: Support multiple >masks per priority")) in the fl_flow_mask structure grow it and its >current size e.g. on x86_64 with defconfig is 760 bytes and more than >1024 bytes with some debug options enabled. Prior the mentioned commit >its size was 176 bytes (using defconfig on x86_64). >With regard to this fact it's reasonable to allocate this structure >dynamically in fl_change() to reduce its stack size. > >Fixes: 05cd271fd61a ("cls_flower: Support multiple masks per priority") Not sure this is -net material. But I don't mind. >Cc: Jiri Pirko >Cc: Paul Blakey >Signed-off-by: Ivan Vecera >--- > net/sched/cls_flower.c | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > >diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c >index dad04e710493..47ac88cc34fb 100644 >--- a/net/sched/cls_flower.c >+++ b/net/sched/cls_flower.c >@@ -1291,16 +1291,22 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, > struct cls_fl_filter *fold = *arg; > struct cls_fl_filter *fnew; > struct nlattr **tb; >- struct fl_flow_mask mask = {}; >+ struct fl_flow_mask *mask; > int err; > > if (!tca[TCA_OPTIONS]) > return -EINVAL; > >- tb = kcalloc(TCA_FLOWER_MAX + 1, sizeof(struct nlattr *), GFP_KERNEL); >- if (!tb) >+ mask = kcalloc(1, sizeof(struct fl_flow_mask), GFP_KERNEL); kzalloc? Otherwise this looks fine. Acked-by: Jiri Pirko >+ if (!mask) > return -ENOBUFS; > >+ tb = kcalloc(TCA_FLOWER_MAX + 1, sizeof(struct nlattr *), GFP_KERNEL); >+ if (!tb) { >+ err = -ENOBUFS; >+ goto errout_mask_alloc; >+ } >+ > err = nla_parse_nested(tb, TCA_FLOWER_MAX, tca[TCA_OPTIONS], > fl_policy, NULL); > if (err < 0) >@@ -1343,12 +1349,12 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, > } > } > >- err = fl_set_parms(net, tp, fnew, &mask, base, tb, tca[TCA_RATE], ovr, >+ err = fl_set_parms(net, tp, fnew, mask, base, tb, tca[TCA_RATE], ovr, > tp->chain->tmplt_priv, extack); > if (err) > goto errout_idr; > >- err = fl_check_assign_mask(head, fnew, fold, &mask); >+ err = fl_check_assign_mask(head, fnew, fold, mask); > if (err) > goto errout_idr; > >@@ -1392,6 +1398,7 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, > } > > kfree(tb); >+ kfree(mask); > return 0; > > errout_mask: >@@ -1405,6 +1412,8 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, > kfree(fnew); > errout_tb: > kfree(tb); >+errout_mask_alloc: >+ kfree(mask); > return err; > } > >-- >2.19.2 >