[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aYXvfbfT6w0TMsXS@stanley.mountain>
Date: Fri, 6 Feb 2026 16:41:17 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: Ioana Ciornei <ioana.ciornei@....com>
Cc: linux-kernel <linux-kernel@...r.kernel.org>
Subject: [bug report] irqchip/ls-extirq: Convert to a platform driver to make
it work again
[ Smatch checking is paused while we raise funding. #SadFace
https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ]
Hello Ioana Ciornei,
Commit 05cd654829dd ("irqchip/ls-extirq: Convert to a platform driver
to make it work again") from Jan 22, 2026 (linux-next), leads to the
following Smatch static checker warning:
drivers/irqchip/irq-ls-extirq.c:180 ls_extirq_probe()
warn: 'priv->intpcr' is an error pointer or valid
drivers/irqchip/irq-ls-extirq.c
158 static int ls_extirq_probe(struct platform_device *pdev)
159 {
160 struct irq_domain *domain, *parent_domain;
161 struct device_node *node, *parent;
162 struct device *dev = &pdev->dev;
163 struct ls_extirq_data *priv;
164 int ret;
165
166 node = dev->of_node;
167 parent = of_irq_find_parent(node);
168 if (!parent)
169 return dev_err_probe(dev, -ENODEV, "Failed to get IRQ parent node\n");
170
171 parent_domain = irq_find_host(parent);
172 if (!parent_domain)
173 return dev_err_probe(dev, -EPROBE_DEFER, "Cannot find parent domain\n");
174
175 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
176 if (!priv)
177 return dev_err_probe(dev, -ENOMEM, "Failed to allocate memory\n");
178
179 priv->intpcr = devm_of_iomap(dev, node, 0, NULL);
--> 180 if (!priv->intpcr)
This should be an IS_ERR() check.
181 return dev_err_probe(dev, -ENOMEM, "Cannot ioremap OF node %pOF\n", node);
182
183 ret = ls_extirq_parse_map(priv, node);
184 if (ret)
185 return dev_err_probe(dev, ret, "Failed to parse IRQ map\n");
186
187 priv->big_endian = of_device_is_big_endian(node->parent);
188 priv->is_ls1021a_or_ls1043a = of_device_is_compatible(node, "fsl,ls1021a-extirq") ||
189 of_device_is_compatible(node, "fsl,ls1043a-extirq");
190 raw_spin_lock_init(&priv->lock);
191
192 domain = irq_domain_create_hierarchy(parent_domain, 0, priv->nirq, of_fwnode_handle(node),
193 &extirq_domain_ops, priv);
194 if (!domain)
195 return dev_err_probe(dev, -ENOMEM, "Failed to add IRQ domain\n");
196
197 return 0;
198 }
regards,
dan carpenter
Powered by blists - more mailing lists