[PATCH 3/3] platform/x86: intel_scu_ipc: Handle errors from optional IRQ lookup
| Newsgroups | org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: bui duc phuc <[email protected]> platform_get_irq_optional() can return errors such as -EPROBE_DEFER, but the driver currently stores the return value directly in scu_data.irq and continues probing. Propagate negative errors other than -ENXIO using dev_err_probe(), and only assign the IRQ to scu_data.irq when a valid IRQ number is returned. Signed-off-by: bui duc phuc <[email protected]> --- drivers/platform/x86/intel_scu_pltdrv.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/intel_scu_pltdrv.c b/drivers/platform/x86/intel_scu_pltdrv.c index d5ab62cbf5cc..4686960c44ac 100644 --- a/drivers/platform/x86/intel_scu_pltdrv.c +++ b/drivers/platform/x86/intel_scu_pltdrv.c @@ -21,8 +21,14 @@ static int intel_scu_platform_probe(struct platform_device *pdev) struct intel_scu_ipc_data scu_data = {}; struct intel_scu_ipc_dev *scu; const struct resource *res; + int ret; + + ret = platform_get_irq_optional(pdev, 0); + if (ret < 0 && ret != -ENXIO) + return ret; + if (ret > 0) + scu_data.irq = ret; - scu_data.irq = platform_get_irq_optional(pdev, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return -ENOMEM; -- 2.43.0