Received: by 10.192.165.148 with SMTP id m20csp4126939imm; Tue, 8 May 2018 03:28:26 -0700 (PDT) X-Google-Smtp-Source: AB8JxZovxOSY9wPAikfKN7/T9ZbB+fF+8Kpfsleuy5o5iWYujmYVaSDqBpHUYnkkfLtne4xrR25X X-Received: by 2002:a17:902:b942:: with SMTP id h2-v6mr42031097pls.312.1525775306800; Tue, 08 May 2018 03:28:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525775306; cv=none; d=google.com; s=arc-20160816; b=0FxrDphvST5tJbTGNydKdo4slzJ0/cOe+dSkW/6Bkdss/S3wo2o2h6Zx10hrUDyaKo +bPssFWKgMDNv2F9t3elNnqjgaGHa5HEfeHx9vhjSfi1WGGp1jrI0k3e5DRJkw9Vt/6q R6tV4d7pYIXR/6nrhHudxahhpzBBm/DJtOT/NPAlWsyB1XhjIFDj+8GQImY8t3OnC8Dw eys8k9O3y/PRuD947qvn3CpwO7pn50T50Xr7V6sr2BZCuir3PigCGNHReuPLCEbY5C8B iuXptiaZrLRAzKin4zrGdCHtwnUkU0f0Ixg9fRBO34eEke1x0wXNUUt54AnXyA/2jBFw YLlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=gy5j23mXjUgAHXiZ+ON7Y7CYSUS1huYf9qiSvo3oMeo=; b=cciEGtCMlqF9ypxK1FUohQzLQyUMgXPaBsuT4w5NDwkp5TTtCoXpU8pCCmljMdyZ6W 3giY7e2L1rUq63ukUXObk9BU7gS8EQzQi7SA9a6RtsbpMDtAYBqIrA1cf1o7L89zotw1 5Zofj/A31AdE8nc2FmqSyHaclViVADgGyZqpmUHGbbDdqsoZKz5BNIBnvUNlMPFoYrwW 4AbRaGVkUp9SPKUC7sJfUZN7B6vwbYMRz0e+vxPUDw7VPaxFgP+OAYGr1dHnBLAM7Q2n JTYgrGUbf+ecYWorygezvfaJ17asW/bTtypn5CABUWvMy/LrlLakb6FJkDX1hmMM8qmY 1hNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=iQgSJJFy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 65-v6si24259654plb.301.2018.05.08.03.28.12; Tue, 08 May 2018 03:28:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=iQgSJJFy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932089AbeEHK2C (ORCPT + 99 others); Tue, 8 May 2018 06:28:02 -0400 Received: from mail-ua0-f194.google.com ([209.85.217.194]:42767 "EHLO mail-ua0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754343AbeEHK2A (ORCPT ); Tue, 8 May 2018 06:28:00 -0400 Received: by mail-ua0-f194.google.com with SMTP id f3so20330553uan.9; Tue, 08 May 2018 03:28:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=gy5j23mXjUgAHXiZ+ON7Y7CYSUS1huYf9qiSvo3oMeo=; b=iQgSJJFyLw1AOe1tNaiWi9h8rqzVUp80FTDq96L4UVcx7H/pzdZm3u2pyt93Jq7i7k Ye4CujlzrSNf76OB/vjGK8mOkkmpSyeRPMwdzSYzuuW0JWl2ed38/mbFnzZ8ROADT5UN Q6Jb0+RJao5a8UVTpfdWQ2ar7nFxQWD08b0GR4CcGGYO1zX9/ZcXxDE+/U4SKvSEqQYu CJFXyEgFSxB8DS3DM2m+jpMe0l4Lalkfamw0x7mgCfcvbwUOshror8hKuNPgC06G52RK KaPkdFox77I0RJqyyxjS0gES46iIS7buWRgn9vjRell5eVxsgC1ghoecOAFnTTWxvawT KuUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=gy5j23mXjUgAHXiZ+ON7Y7CYSUS1huYf9qiSvo3oMeo=; b=arfRctBNOSa+yjhQiBP6++fA0C0gpUMrWe0QmctjFQMsyP77Z6YXh1RTeP1Rc4AzCK CNsgD10xeHqVHGyng8ULc3WSRmj7BDXko5FTm5q8Ly+4ZIiTgRJzBjJXXLL668R7pAJO e/kVeyDeYpPH8a1Of71S7+S6SAB0B3UUi0itrhVFXXwqVxSJbc1PELkZKCfMPEQZpgmP L+ENnrKNBZA0gNTdoFrgaI6HsgoiiHXmX1/oPeG8oHWPexRGKPvjKZZZWs7n3OP6bGiZ 4+O7D/Wy9gAD/1olwW6hyrb7lekgzTsYX+iJ7VkAXHa/mQsKqxNVCJrh5lw/JtLwDokO R3XQ== X-Gm-Message-State: ALQs6tBSEmwt0qXucs5HlDGje6ZYZ64KssyyGqZWMGXijaMSk6JwHWu4 MC5QaYiPo1WnRwVM4exuZOktwwcd4XJuis5zVOw= X-Received: by 10.176.27.41 with SMTP id d41mr34605888uai.6.1525775280104; Tue, 08 May 2018 03:28:00 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.3.129 with HTTP; Tue, 8 May 2018 03:27:39 -0700 (PDT) In-Reply-To: <20180507192641.GD31021@lunn.ch> References: <1525706596-13601-1-git-send-email-s.mesoraca16@gmail.com> <20180507192641.GD31021@lunn.ch> From: Salvatore Mesoraca Date: Tue, 8 May 2018 12:27:39 +0200 Message-ID: Subject: Re: [PATCH v2] net: dsa: drop some VLAs in switch.c To: Andrew Lunn Cc: Florian Fainelli , linux-kernel@vger.kernel.org, Kernel Hardening , netdev@vger.kernel.org, "David S. Miller" , Kees Cook , Vivien Didelot , David Laight Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-05-07 21:26 GMT+02:00 Andrew Lunn : >> >> +++ b/include/net/dsa.h >> >> @@ -256,6 +256,9 @@ struct dsa_switch { >> >> /* Number of switch port queues */ >> >> unsigned int num_tx_queues; >> >> >> >> + unsigned long *bitmap; >> >> + unsigned long _bitmap; >> >> + >> >> /* Dynamically allocated ports, keep last */ >> >> size_t num_ports; >> >> struct dsa_port ports[]; >> >> diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c >> >> index adf50fb..cebf35f0 100644 >> >> --- a/net/dsa/dsa2.c >> >> +++ b/net/dsa/dsa2.c >> >> @@ -748,6 +748,20 @@ struct dsa_switch *dsa_switch_alloc(struct device *dev, size_t n) >> >> if (!ds) >> >> return NULL; >> >> >> >> + /* We avoid allocating memory outside dsa_switch >> >> + * if it is not needed. >> >> + */ >> >> + if (n <= sizeof(ds->_bitmap) * 8) { >> >> + ds->bitmap = &ds->_bitmap; >> > >> > Should not this be / BITS_PER_BYTE? If the sizeof(unsigned long) is <= >> > 8, then you don't need to allocate it, otherwise, you have to. > >> This optimization will save us an allocation when number of ports is >> less than 32 or 64 (depending on arch). >> IMHO it's useful, if you consider that, right now, DSA works only with >> 12-ports switches. > > Do you have a feeling for the savings? I don't see it being very > large, and given the extra code, it might actually be negative. I think that a "compare" and a "jump" costs nothing compared to devm_kmalloc, its eventual free, and, *maybe*, the cache miss you get every time you access the bitmask. This is not necessarily relevant if this code it's invoked rarely, but, IMHO, it seems strange to always go for dynamic allocation for something that will be, almost always, as big as a pointer. Salvatore