Re: [PATCH] rtc: armada38x: zalloc + calloc to single allocation
From: Gregory CLEMENT
Date: Thu Mar 05 2026 - 03:44:01 EST
Rosen Penev <rosenp@xxxxxxxxx> 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@xxxxxxxxxxx>
Thanks,
Gregory
> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> ---
> 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