Re: [PATCH v2 3/6] irqchip: Introduce RTD1319 support using the Realtek common interrupt controller driver

From: Dan Carpenter
Date: Mon Nov 20 2023 - 11:18:32 EST


Hi James,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/James-Tai/dt-bindings-interrupt-controller-Add-support-for-Realtek-DHC-SoCs/20231118-003036
base: tip/irq/core
patch link: https://lore.kernel.org/r/20231117162709.1096585-4-james.tai%40realtek.com
patch subject: [PATCH v2 3/6] irqchip: Introduce RTD1319 support using the Realtek common interrupt controller driver
config: nios2-randconfig-r081-20231120 (https://download.01.org/0day-ci/archive/20231120/202311201929.2FpvMRlg-lkp@xxxxxxxxx/config)
compiler: nios2-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231120/202311201929.2FpvMRlg-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <error27@xxxxxxxxx>
| Closes: https://lore.kernel.org/r/202311201929.2FpvMRlg-lkp@xxxxxxxxx/

smatch warnings:
drivers/irqchip/irq-realtek-intc-common.c:179 realtek_intc_probe() warn: ignoring unreachable code.
drivers/irqchip/irq-realtek-intc-common.c:187 realtek_intc_probe() warn: 'data->base' from of_iomap() not released on lines: 176,182.

vim +179 drivers/irqchip/irq-realtek-intc-common.c

40e5ff4eaef72b James Tai 2023-11-18 155 int realtek_intc_probe(struct platform_device *pdev, const struct realtek_intc_info *info)
40e5ff4eaef72b James Tai 2023-11-18 156 {
40e5ff4eaef72b James Tai 2023-11-18 157 struct realtek_intc_data *data;
40e5ff4eaef72b James Tai 2023-11-18 158 struct device *dev = &pdev->dev;
40e5ff4eaef72b James Tai 2023-11-18 159 struct device_node *node = dev->of_node;
40e5ff4eaef72b James Tai 2023-11-18 160 int ret, i;
40e5ff4eaef72b James Tai 2023-11-18 161
40e5ff4eaef72b James Tai 2023-11-18 162 data = devm_kzalloc(dev, struct_size(data, subset_data, info->cfg_num), GFP_KERNEL);
40e5ff4eaef72b James Tai 2023-11-18 163 if (!data)
40e5ff4eaef72b James Tai 2023-11-18 164 return -ENOMEM;
40e5ff4eaef72b James Tai 2023-11-18 165
40e5ff4eaef72b James Tai 2023-11-18 166 data->base = of_iomap(node, 0);
40e5ff4eaef72b James Tai 2023-11-18 167 if (!data->base)
40e5ff4eaef72b James Tai 2023-11-18 168 return -ENOMEM;
40e5ff4eaef72b James Tai 2023-11-18 169
40e5ff4eaef72b James Tai 2023-11-18 170 data->info = info;
40e5ff4eaef72b James Tai 2023-11-18 171
40e5ff4eaef72b James Tai 2023-11-18 172 raw_spin_lock_init(&data->lock);
40e5ff4eaef72b James Tai 2023-11-18 173
40e5ff4eaef72b James Tai 2023-11-18 174 data->domain = irq_domain_add_linear(node, 32, &realtek_intc_domain_ops, data);
40e5ff4eaef72b James Tai 2023-11-18 175 if (!data->domain)
40e5ff4eaef72b James Tai 2023-11-18 176 return -ENOMEM;
40e5ff4eaef72b James Tai 2023-11-18 177
40e5ff4eaef72b James Tai 2023-11-18 178 data->subset_data_num = info->cfg_num;
40e5ff4eaef72b James Tai 2023-11-18 @179 for (i = 0; i < info->cfg_num; i++) {
40e5ff4eaef72b James Tai 2023-11-18 180 ret = realtek_intc_subset(node, data, i);
40e5ff4eaef72b James Tai 2023-11-18 181 WARN(ret, "failed to init subset %d: %d", i, ret);
40e5ff4eaef72b James Tai 2023-11-18 182 return -ENOMEM;

This loop just returns -ENOMEM. Missing if statement?
No clean up either. Needs to release resources before returning.

40e5ff4eaef72b James Tai 2023-11-18 183 }
40e5ff4eaef72b James Tai 2023-11-18 184
40e5ff4eaef72b James Tai 2023-11-18 185 platform_set_drvdata(pdev, data);
40e5ff4eaef72b James Tai 2023-11-18 186
40e5ff4eaef72b James Tai 2023-11-18 @187 return 0;
40e5ff4eaef72b James Tai 2023-11-18 188 }
40e5ff4eaef72b James Tai 2023-11-18 189 EXPORT_SYMBOL(realtek_intc_probe);

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki