Re: [PATCH] iio: common: scmi_iio: use kcalloc() instead of kzalloc()

From: Qianfeng Rong
Date: Tue Aug 19 2025 - 08:31:54 EST



在 2025/8/19 18:13, Andy Shevchenko 写道:
[You don't often get email from andy.shevchenko@xxxxxxxxx. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

On Tue, Aug 19, 2025 at 1:08 PM Qianfeng Rong <rongqianfeng@xxxxxxxx> wrote:
在 2025/8/19 17:46, Andy Shevchenko 写道:
On Tue, Aug 19, 2025 at 11:56 AM Qianfeng Rong <rongqianfeng@xxxxxxxx> wrote:
...

While this change is correct...
sensor->freq_avail =
- devm_kzalloc(&iio_dev->dev,
- sizeof(*sensor->freq_avail) *
- (sensor->sensor_info->intervals.count * 2),
+ devm_kcalloc(&iio_dev->dev,
+ sensor->sensor_info->intervals.count * 2,
...I would also switch this to use array_size() instead of explicit
multiplication as it will check for boundaries that are not static in
this case.
I don't understand what "will check for boundaries that are not static in
this case" means. Could you explain it to me?
intervals.count may be anything and of any type. Compiler may or may
not proof that it holds the value less than size_t / 2 (which may be
== int / 2 on 32-bit platforms). That's why it's better to use
array_size(intervals.count, 2),
Sorry, I just understood your reply, I will send v2 immediately.  :)

I've experimented with the following command and found that kmalloc_array()
generates fewer instructions than kmalloc(array_size()):
objdump -dSl --prefix-addresses <changed module>.o
It's about the second parameter in devm_kcalloc(), and of course it
may generate less instructions but it's irrelevant to my comment.


Best regards,
Qianfeng