From patchwork Sat Feb 9 03:16:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1039099 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="Er7cAoke"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43xHKK09ylz9sMp for ; Sat, 9 Feb 2019 14:17:09 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726944AbfBIDQz (ORCPT ); Fri, 8 Feb 2019 22:16:55 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:45377 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726894AbfBIDQy (ORCPT ); Fri, 8 Feb 2019 22:16:54 -0500 Received: by mail-qt1-f196.google.com with SMTP id e5so6255857qtr.12 for ; Fri, 08 Feb 2019 19:16:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5mD5WLp4nfL2TNKIoso7eimIu5xpCfLnttH5DhLkqa0=; b=Er7cAokemIvp5QkJpmq6mMpXVmfTkvnX2j4ORc227CWV5pfo5Z6bb2NyAGCegFl2fd mssrgy+mTXaBxQ3g4XZ7yoXftG9vKfU+dCTtlPJWDW7vzFlR9gheVYY3fDP0s06iWFfW mu9f9Ue+PQAzgR/esHWASBcxwTciVm9GP3LMXra/JGvJgNpxdOUwzKZY3VgiYl8RoU3Y 8M8qwf1u7YjDsM+rJWNuWuUvcBGyDv8MJ07xXkPzyS0nu9sOd1W62lFU09ja4qzoMw/q 0C4FKvqjiGomMmrbvitxr9rO05KVUp7/plXLJdG/QY1EWVbPPsk9seKQ17A1wIYKhYKt dyfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5mD5WLp4nfL2TNKIoso7eimIu5xpCfLnttH5DhLkqa0=; b=M3PktdSJMRaa7HU4OdnXkOdNxBJ1sCMOJ+omvjy4KGa7o8HRQwH3CrgAhlpAcwKIlX lOLcIX7WCFvXpshhDdsXKMxoAB9JXQsfV8+gM4W4e871p8DfFd3vsZ5gnXkVZwsOGIXM zRS1wix2GGhAAhLBP2Tr6bOE76u5y4pp3ivGgeqpiUnt0mZo0IiNurCDGN0uzg7kckL/ k14K7Pv4uHYs746aAn8UuJ3nGI+fr+LcMiSQ+dvoZWIBmaMbFpA3Np8tCiQv6MWLHc5D kc8V3X6lpE4CjOFYqdIaZyiR4ZvG91tnAr74LSPFtvOHdG8JgblU93brfil0Fog0YgE5 KlGQ== X-Gm-Message-State: AHQUAuasljCRVMdWmmHf/GarR1TsDE6PPA08DcB1r8jbNN3Xr8SW1I8s u3wmCJ/cKRq/4c+FbwPGMR1xKg== X-Google-Smtp-Source: AHgI3IbWF/XzShSWKNN7DeQE98CGQ4/ZxdInV2U9JI4cNB2ujri36phkrACbCt+NsWjQcLeYYq0FCw== X-Received: by 2002:aed:3bb3:: with SMTP id r48mr1573905qte.278.1549682213770; Fri, 08 Feb 2019 19:16:53 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id i28sm3185212qkk.41.2019.02.08.19.16.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Feb 2019 19:16:53 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net Cc: jiri@resnulli.us, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next 2/4] devlink: don't allocate attrs on the stack Date: Fri, 8 Feb 2019 19:16:09 -0800 Message-Id: <20190209031611.1102-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190209031611.1102-1-jakub.kicinski@netronome.com> References: <20190209031611.1102-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Number of devlink attributes has grown over 128, causing the following warning: ../net/core/devlink.c: In function ‘devlink_nl_cmd_region_read_dumpit’: ../net/core/devlink.c:3740:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=] } ^ Since the number of attributes is only going to grow allocate the array dynamically. Signed-off-by: Jakub Kicinski Acked-by: Jiri Pirko --- net/core/devlink.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/net/core/devlink.c b/net/core/devlink.c index cf0f511bc56c..46c468a1f3dc 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3629,26 +3629,30 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb, struct netlink_callback *cb) { u64 ret_offset, start_offset, end_offset = 0; - struct nlattr *attrs[DEVLINK_ATTR_MAX + 1]; const struct genl_ops *ops = cb->data; struct devlink_region *region; struct nlattr *chunks_attr; const char *region_name; struct devlink *devlink; + struct nlattr **attrs; bool dump = true; void *hdr; int err; start_offset = *((u64 *)&cb->args[0]); + attrs = kmalloc_array(DEVLINK_ATTR_MAX + 1, sizeof(*attrs), GFP_KERNEL); + if (!attrs) + return -ENOMEM; + err = nlmsg_parse(cb->nlh, GENL_HDRLEN + devlink_nl_family.hdrsize, attrs, DEVLINK_ATTR_MAX, ops->policy, cb->extack); if (err) - goto out; + goto out_free; devlink = devlink_get_from_attrs(sock_net(cb->skb->sk), attrs); if (IS_ERR(devlink)) - goto out; + goto out_free; mutex_lock(&devlink_mutex); mutex_lock(&devlink->lock); @@ -3710,6 +3714,7 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb, genlmsg_end(skb, hdr); mutex_unlock(&devlink->lock); mutex_unlock(&devlink_mutex); + kfree(attrs); return skb->len; @@ -3718,7 +3723,8 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb, out_unlock: mutex_unlock(&devlink->lock); mutex_unlock(&devlink_mutex); -out: +out_free: + kfree(attrs); return 0; }