RE: [PATCH v3 2/6] irqchip: Add interrupt controller support for Realtek DHC SoCs

James Tai [戴志峰]
2023-12-08T08:21:51Z

Hi Dan,

>> devm_ allocations are cleaned up automatically so there is no need to
>> call devm_kfree() before returning.
>>
>> regards,
>> dan carpenter
>
I will remove it.

>> > + }
>> > +
>> > + data->info = info;
>> > +
>> > + raw_spin_lock_init(&data->lock);
>> > +
>> > + data->domain = irq_domain_add_linear(node, 32,
>> > + &realtek_intc_domain_ops, data);
>
>Btw, as I was testing the other static checker warning for <= 0, my static
>checker really wants this irq_domain_add_linear() to be cleaned up on the error
>path.
>
>Otherwise it probably leads to a use after free because we free data
>(automatically or manually) but it's still on a list somewhere.
>
I will add 'irq_domain_remove()' to release it.

>> > + if (!data->domain) {
>> > + ret = -ENOMEM;
>> > + goto out_cleanup;
>> > + }
>> > +
>> > + data->subset_data_num = info->cfg_num;
>> > + for (i = 0; i < info->cfg_num; i++) {
>> > + ret = realtek_intc_subset(node, data, i);
>> > + if (ret) {
>> > + WARN(ret, "failed to init subset %d: %d", i, ret);
>> > + ret = -ENOMEM;
>> > + goto out_cleanup;
>
>This error path.
>
>regards,
>dan carpenter
>
I will add 'irq_domain_remove()' before goto cleanup.

for (i = 0; i < info->cfg_num; i++) {
ret = realtek_intc_subset(node, data, i);
if (ret) {
WARN(ret, "failed to init subset %d: %d", i, ret);
irq_domain_remove(data->domain);
ret = -ENOMEM;
goto out_cleanup;
}
}

Thank you for your feedback.

Regards,
James