[PATCH] rtc: armada38x: zalloc + calloc to single allocation

Gregory CLEMENT gregory.clement at bootlin.com
Thu Mar 5 00:41:03 PST 2026


Rosen Penev <rosenp at gmail.com> writes:

> Use a flexible array member to simplify allocation.
>

I must admit that I didn't know struct_size(), it is a nice helper!

Reviewed-by: Gregory CLEMENT <gregory.clement at bootlin.com>

Thanks,

Gregory
> Signed-off-by: Rosen Penev <rosenp at gmail.com>
> ---
>  drivers/rtc/rtc-armada38x.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c
> index 713fa0d077cd..245290ae1a8d 100644
> --- a/drivers/rtc/rtc-armada38x.c
> +++ b/drivers/rtc/rtc-armada38x.c
> @@ -72,8 +72,8 @@ struct armada38x_rtc {
>  	spinlock_t	    lock;
>  	int		    irq;
>  	bool		    initialized;
> -	struct value_to_freq *val_to_freq;
>  	const struct armada38x_rtc_data *data;
> +	struct value_to_freq val_to_freq[];
>  };
>  
>  #define ALARM1	0
> @@ -490,18 +490,13 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
>  {
>  	struct armada38x_rtc *rtc;
>  
> -	rtc = devm_kzalloc(&pdev->dev, sizeof(struct armada38x_rtc),
> +	rtc = devm_kzalloc(&pdev->dev, struct_size(rtc, val_to_freq, SAMPLE_NR),
>  			    GFP_KERNEL);
>  	if (!rtc)
>  		return -ENOMEM;
>  
>  	rtc->data = of_device_get_match_data(&pdev->dev);
>  
> -	rtc->val_to_freq = devm_kcalloc(&pdev->dev, SAMPLE_NR,
> -				sizeof(struct value_to_freq), GFP_KERNEL);
> -	if (!rtc->val_to_freq)
> -		return -ENOMEM;
> -
>  	spin_lock_init(&rtc->lock);
>  
>  	rtc->regs = devm_platform_ioremap_resource_byname(pdev, "rtc");
> -- 
> 2.53.0
>

-- 
Grégory CLEMENT, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



More information about the linux-arm-kernel mailing list