platform_get_irq_byname() can fail here and we must check its return value.
device_register() can fail here, initialised 'result' variable beforen'goto fail_register' otherwise vlynq_probe will return uninitialised 'result' variable. Signed-off-by: Arvind Yadav <[email protected]> --- changes in v2 : return device_register() value insted of -ENXIO. drivers/vlynq/vlynq.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/vlynq/vlynq.c b/drivers/vlynq/vlynq.c index c0227f9..a200ff0 100644 --- a/drivers/vlynq/vlynq.c +++ b/drivers/vlynq/vlynq.c @@ -722,13 +722,19 @@ static int vlynq_probe(struct platform_device *pdev) VLYNQ_REMOTE_OFFSET); dev->irq = platform_get_irq_byname(pdev, "irq"); + if (dev->irq < 0) { + result = dev->irq; + goto fail_register; + } dev->irq_start = irq_res->start; dev->irq_end = irq_res->end; dev->local_irq = dev->irq_end - dev->irq_start; dev->remote_irq = dev->local_irq - 1; - if (device_register(&dev->dev)) + result = device_register(&dev->dev); + if (result) goto fail_register; + platform_set_drvdata(pdev, dev); printk(KERN_INFO "%s: regs 0x%p, irq %d, mem 0x%p\n", -- 2.7.4

