From nobody Wed Apr 8 03:07:45 2026 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53703363C79 for ; Wed, 11 Mar 2026 00:34:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773189292; cv=none; b=UY6eH4gVyflBHcnjy3ngZq0qZiUQTFDmMs0/eOSjwJGJuIquyh6VRLytNyGp+TuXr68Dd4jnstW6lPbzzMI6ixhFk3FV/SEzK+bTVrXnV9vM8Cf/LAw9TAEJ653x6D4s2eBfRrLNduK16sM+RD8Hs6RBMPzwpu2wz57dX/DKU0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773189292; c=relaxed/simple; bh=B/tqumodIgkuXLcIDjCvC+BGzbRSoaLzvllGIMZTIfo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=VZhEDjvwiJL8tURRpyhWyna1mVZcPtIysm9Sx+sSVDis7ZkAKyqh0X9z+SdmOSIofzppQUIB7syZnPoxBtE/OkRVXd1U7iYjJKdCC2t/YCNOt3+bJQ9qgNWp0KnK7Ny8A2Jq6eaK4BQaUFzrdme0MOJOSrL5fDxOfXScfcleWC8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iAItiUIW; arc=none smtp.client-ip=209.85.216.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iAItiUIW" Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-3597c40a838so4254226a91.1 for ; Tue, 10 Mar 2026 17:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773189290; x=1773794090; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7YSc98IcO6Pk8M+lzdgpoqKTHGos+KZeMXffp4drDJs=; b=iAItiUIWFQgw8znFg8qrBVT10D4LqM75DMGoXScjIeeYHsJFdjgKXP8tGLkOHj0PBW Mbry8oajIw8MV9/skM+YgvDf63yK8/7IL6UlMVld7aRXy3g5+CPX/oBspE33lRe+74hW UH6YsFeFvtTTJgnS1ria04b/tRMhd4Vws1zVN4ljLX/goDpo4wABwB9/dYRCY3ndoK/8 cy/yWvi4TKqL87ETU5FYPivHN8+6Q2ydw0mdPok3g0WR6lKVydOXiFr3og+5D5mdVsWM GFNoddLDpkpMCO5A6e8Pk1Cwn3XbOwDHc6zzdo7+dniVm/9iEQ0jGt5DdUwqA+8zmEO6 hMFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773189290; x=1773794090; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7YSc98IcO6Pk8M+lzdgpoqKTHGos+KZeMXffp4drDJs=; b=YHCa82F4VgmpW4KTdETq3Bc8I0wHcgSwNTpG9ddOy1iBVO7ugTncwHOLesWU90eev4 7CwG5MaL9s3/pA3wrjjop/iI2arbKzpLnBJVU5p1m1oCrrEpEF+xJP5E5NBKnzL7vs/4 gM59QFMqeI0XWDnLHSTOVR76Ni/qSlZH4AWxtcb30U1aseW7nRuognTctArGwbUVe0KJ 36oGOwMl9j+2Fr27L0lkKs45SY9LgSXNtc4+HdpY4Rs0tN6muyzZtBQxvNvpQQgsHJCZ WWqTSS7AZdEzJCf+RLqHlvijS1yYxEH6pyaUANcxM4xfXdy0Oa/B1t1SrJh5Zb+0nPwb 8L6Q== X-Forwarded-Encrypted: i=1; AJvYcCUJlIzf+HmosH2d4IL8inPZP5fO0ZjSljdnrl83YRVY68+PmSKLR4DuLXqKpdjkgjJptE+KtReQ/Hn/BhI=@vger.kernel.org X-Gm-Message-State: AOJu0YwbI06RYZWGyuqrJKdA6wUKj7LZFQyWwCYvArqBBg3CwnOU6nTI FGae2qHS0p1FFVb3qeteR+VvKYU/jd1wM/smdprZZVM+XfgfVanq813D X-Gm-Gg: ATEYQzythVE6dvtvO1B2nWu7fSeOBMI27v7XaY2U4hLQriM+B5boIvybdcxPDE55J9g M1s1AqrRfoH/sFspG00SqWygn3a6KoawpWqAvH2Ss2dwKVcGBUAcHPSGim7mt5Su/IxIlrhfQBP 94uuSz1mgRnjuIBkI2V2Im/qYpLkFuF4fg72NKDoJltFJHtPseoncf4uGd9nprna5k87Sqv0NBX HJ0gATTw6MzBg0i8QmCscl7Ka9lSwYLYpmqcenpfpREm/J9y9rCK4bR2UGhGaM2y0UWUMCdFjZZ DmLzpWrBuhGHPD/DGYoxppShzE/inl0mk+/HyXQoPdRmZjzL4ch9HPxo/Gk/pgLER+0MaHS5Sch Jdk0Td9Kzz8C3mWR/gd9jKQhhGIjpHdPPHwpr0anrnDDkZC+ZBcSKOBrgRrsasRQ5MdSRi2fidA xSGU2pJq5kxfyzFssJ127gHILFl56GCd65TeeKVDD/hApbK4dWHLSTAQ== X-Received: by 2002:a17:90b:5111:b0:359:d54:846f with SMTP id 98e67ed59e1d1-35a011d0b9cmr793085a91.7.1773189289448; Tue, 10 Mar 2026 17:34:49 -0700 (PDT) Received: from ryzen ([2601:644:8000:56f5::8bd]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c73cdf0e48dsm330349a12.1.2026.03.10.17.34.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 17:34:48 -0700 (PDT) From: Rosen Penev To: linux-gpio@vger.kernel.org Cc: Ray Jui , Broadcom internal kernel review list , Linus Walleij , Bartosz Golaszewski , Florian Fainelli , Scott Branden , Kees Cook , "Gustavo A. R. Silva" , linux-kernel@vger.kernel.org (open list), linux-hardening@vger.kernel.org (open list:KERNEL HARDENING (not covered by other areas):Keyword:\b__counted_by(_le|_be)?\b) Subject: [PATCH] gpio: bcm-kona: remove kcalloc Date: Tue, 10 Mar 2026 17:34:31 -0700 Message-ID: <20260311003431.31881-1-rosenp@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Simplify allocation by using a flexible array member. Use __counted_by for extra runtime analysis. Shuffle some code as __counted_by requires the counting variable to be set right after allocation. Signed-off-by: Rosen Penev --- drivers/gpio/gpio-bcm-kona.c | 37 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c index 208b71c59d58..b1d32d590cf8 100644 --- a/drivers/gpio/gpio-bcm-kona.c +++ b/drivers/gpio/gpio-bcm-kona.c @@ -58,15 +58,6 @@ #define LOCK_CODE 0xffffffff #define UNLOCK_CODE 0x00000000 =20 -struct bcm_kona_gpio { - void __iomem *reg_base; - int num_bank; - raw_spinlock_t lock; - struct gpio_chip gpio_chip; - struct irq_domain *irq_domain; - struct bcm_kona_gpio_bank *banks; -}; - struct bcm_kona_gpio_bank { int id; int irq; @@ -90,6 +81,15 @@ struct bcm_kona_gpio_bank { struct bcm_kona_gpio *kona_gpio; }; =20 +struct bcm_kona_gpio { + void __iomem *reg_base; + int num_bank; + raw_spinlock_t lock; + struct gpio_chip gpio_chip; + struct irq_domain *irq_domain; + struct bcm_kona_gpio_bank banks[] __counted_by(num_bank); +}; + static inline void bcm_kona_gpio_write_lock_regs(void __iomem *reg_base, int bank_id, u32 lockcode) { @@ -584,12 +584,6 @@ static int bcm_kona_gpio_probe(struct platform_device = *pdev) int ret; int i; =20 - kona_gpio =3D devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); - if (!kona_gpio) - return -ENOMEM; - - kona_gpio->gpio_chip =3D template_chip; - chip =3D &kona_gpio->gpio_chip; ret =3D platform_irq_count(pdev); if (!ret) { dev_err(dev, "Couldn't determine # GPIO banks\n"); @@ -597,6 +591,11 @@ static int bcm_kona_gpio_probe(struct platform_device = *pdev) } else if (ret < 0) { return dev_err_probe(dev, ret, "Couldn't determine GPIO banks\n"); } + + kona_gpio =3D devm_kzalloc(dev, struct_size(kona_gpio, banks, ret), GFP_K= ERNEL); + if (!kona_gpio) + return -ENOMEM; + kona_gpio->num_bank =3D ret; =20 if (kona_gpio->num_bank > GPIO_MAX_BANK_NUM) { @@ -604,13 +603,9 @@ static int bcm_kona_gpio_probe(struct platform_device = *pdev) GPIO_MAX_BANK_NUM); return -ENXIO; } - kona_gpio->banks =3D devm_kcalloc(dev, - kona_gpio->num_bank, - sizeof(*kona_gpio->banks), - GFP_KERNEL); - if (!kona_gpio->banks) - return -ENOMEM; =20 + kona_gpio->gpio_chip =3D template_chip; + chip =3D &kona_gpio->gpio_chip; chip->parent =3D dev; chip->ngpio =3D kona_gpio->num_bank * GPIO_PER_BANK; =20 --=20 2.53.0