From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from omta34.uswest2.a.cloudfilter.net (omta34.uswest2.a.cloudfilter.net [35.89.44.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48DA436D4FC for ; Fri, 6 Mar 2026 19:21:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=35.89.44.33 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772824892; cv=none; b=uP/TMaN8GuaBZyv/hUt0QrJ8/Z5OTqYsfLnvm5siIgXKXZb1uDSdKnQUsvexByb5DYy4XWoGnpjCarVszydUUO5CsqFGl52q5R0//vkiOpJSjjKHPfNWboSw3bws8ZXpL/0RfyrZERFvzbuHC1Hnyr4H2+JNz/5U2AzKDjLnxng= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772824892; c=relaxed/simple; bh=jbRDxYd1he6LzuYxEq1Q3XunXni6sxDlFu3tOBrBLj8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=r6f81LqVD4GQcrSwHzSNkT1ktVUKPnyxUKxgrWarRcXEwOkjcvPUBTnPNG6o8KAkql9Xcmo1sKFIxk7gevhehJo4P2xaczwWn/k88byrN41A2dQD5tRK3TFC7l2NF98BowoJRgtsAzY3m7AqbM1P0xUajiKMyPJHORFVt9rZF+E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com; spf=pass smtp.mailfrom=embeddedor.com; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b=O9y9+73+; arc=none smtp.client-ip=35.89.44.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b="O9y9+73+" Received: from eig-obgw-6005b.ext.cloudfilter.net ([10.0.30.162]) by cmsmtp with ESMTPS id yZrnvWKF6Kjfoyajlvzx6p; Fri, 06 Mar 2026 19:21:25 +0000 Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with ESMTPS id yajIvOtrrHSQMyajJv6c5R; Fri, 06 Mar 2026 19:20:57 +0000 X-Authority-Analysis: v=2.4 cv=GIQIEvNK c=1 sm=1 tr=0 ts=69ab2934 a=1YbLdUo/zbTtOZ3uB5T3HA==:117 a=k5Y5iPg+dmTXVWgYE/XtfQ==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=7T7KSl7uo7wA:10 a=pGLkceISAAAA:8 a=EcUihO1BCf_UJVK-1IMA:9 a=QEXdDO2ut3YA:10 a=2aFnImwKRvkU0tJ3nQRT:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=embeddedor.com; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=0n42meaqGDUGzjj9bzqWNF89weGMYcF1c/cak04I5XA=; b=O9y9+73+ouMsaM0xhKXiJLvW2a Ywu4XqNxZDNA1lNVURcPwpGMvAnMU7PlOFI9ARxlq1vzbhxgwjvRjBAFzEGF7BIbj/G0ADu2tgwij 9OWq5wtMF2uaEedEWgX0RivJ03Fw3lUwSIE6/s9jLLPIYYduNkyeHHCPnGH883u2sxfkPAqLV4g4T jZp0qeP4m8iTd+1/5kRv3QoZXgu6+Q/fifr1woOnsqC2jPjGJlRmKZiRvjhi+jVZO5ZDI6NXIif5K 5qWQJVoEN5uB5MOb5wyZ65bg0DqTe0q6rhCA6aTIhk6PBhNhw9ajWpW+owBAT0rQ+YWIMkbMwZimX no7nUOPw==; Received: from [177.238.16.13] (port=34680 helo=[192.168.0.21]) by gator4166.hostgator.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.99.1) (envelope-from ) id 1vyajI-00000001Gcm-09F6; Fri, 06 Mar 2026 13:20:56 -0600 Message-ID: <9dbf5b85-66ec-4d3f-99d6-17cc74a8f912@embeddedor.com> Date: Fri, 6 Mar 2026 13:20:27 +0900 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] soc: mediatek: mtk-dvfsrc: use flex array To: Rosen Penev , linux-mediatek@lists.infradead.org Cc: Matthias Brugger , AngeloGioacchino Del Regno , Kees Cook , "Gustavo A. R. Silva" , "open list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" , open "list:KERNEL" HARDENING "(not" covered by other "areas):Keyword:b__counted_by(_le|_be)?b" References: <20260304232014.164408-1-rosenp@gmail.com> Content-Language: en-US From: "Gustavo A. R. Silva" In-Reply-To: <20260304232014.164408-1-rosenp@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 177.238.16.13 X-Source-L: No X-Exim-ID: 1vyajI-00000001Gcm-09F6 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: ([192.168.0.21]) [177.238.16.13]:34680 X-Source-Auth: gustavo@embeddedor.com X-Email-Count: 26 X-Org: HG=hgshared;ORG=hostgator; X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfLNWUJSfusFj+hNmm8Va19uLKsRmi2pas7Im4N71HTbjDkd9G5Irrdhr3x/8VHI7PF/sgdY1Gyvjy6YK0xHlk2jl3SVUM6IFD6aeqsVEGC9gY89prdzz jhJTmdJ7NpHdn9qfEBWmmxIt0kklY5ugs1/bfDIBHrMDtlL7uXEgt85t7M6dsc/wFHL4jGEM7ILzKi096MQ9QyEMwYpQYZZz00vnmJkJNTRzHQiePEa48684 On 3/5/26 08:20, Rosen Penev wrote: > Simplifies allocation from kzalloc + kcaloc to one allocation. > > Allows extra runtime analysis with __counted_by. > > Signed-off-by: Rosen Penev > --- > drivers/soc/mediatek/mtk-dvfsrc.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-dvfsrc.c b/drivers/soc/mediatek/mtk-dvfsrc.c > index 548a28f50242..48b1fcf3e101 100644 > --- a/drivers/soc/mediatek/mtk-dvfsrc.c > +++ b/drivers/soc/mediatek/mtk-dvfsrc.c > @@ -71,8 +71,8 @@ struct dvfsrc_opp { > }; > > struct dvfsrc_opp_desc { > - const struct dvfsrc_opp *opps; > u32 num_opp; > + struct dvfsrc_opp opps[] __counted_by(num_opp); > }; > > struct dvfsrc_soc_data; > @@ -489,7 +489,6 @@ static u32 dvfsrc_get_opp_gear(struct mtk_dvfsrc *dvfsrc, u8 level) > > static int dvfsrc_get_hw_opps_v4(struct mtk_dvfsrc *dvfsrc) > { > - struct dvfsrc_opp *dvfsrc_opps; > struct dvfsrc_opp_desc *desc; > u32 num_opps, gear_info; > u8 num_vcore, num_dram; > @@ -520,24 +519,19 @@ static int dvfsrc_get_hw_opps_v4(struct mtk_dvfsrc *dvfsrc) > num_opps, num_vcore, num_dram, num_emi); > > /* Allocate everything now as anything else after that cannot fail */ > - desc = devm_kzalloc(dvfsrc->dev, sizeof(*desc), GFP_KERNEL); > + desc = devm_kzalloc(dvfsrc->dev, struct_size(desc, opps, num_ops + 1), GFP_KERNEL); Mmhh... You should really consider building your code before submitting any patches. -Gustavo > if (!desc) > return -ENOMEM; > > - dvfsrc_opps = devm_kcalloc(dvfsrc->dev, num_opps + 1, > - sizeof(*dvfsrc_opps), GFP_KERNEL); > - if (!dvfsrc_opps) > - return -ENOMEM; > + desc->num_opp = num_opps + 1; > > /* Read the OPP table gear indices */ > for (i = 0; i <= num_opps; i++) { > gear_info = dvfsrc_get_opp_gear(dvfsrc, num_opps - i); > - dvfsrc_opps[i].vcore_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_VCORE, gear_info); > - dvfsrc_opps[i].dram_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_DRAM, gear_info); > - dvfsrc_opps[i].emi_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_EMI, gear_info); > + desc->opps[i].vcore_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_VCORE, gear_info); > + desc->opps[i].dram_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_DRAM, gear_info); > + desc->opps[i].emi_opp = FIELD_GET(DVFSRC_V4_GEAR_INFO_EMI, gear_info); > }; > - desc->num_opp = num_opps + 1; > - desc->opps = dvfsrc_opps; > > /* Assign to main structure now that everything is done! */ > dvfsrc->curr_opps = desc;