diff options
author | Alexey Khoroshilov <khoroshilov@ispras.ru> | 2014-12-05 16:28:01 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-01-12 08:04:12 -0500 |
commit | c4277e9ea70431aea0fecebb8bb9a3fbc27d074e (patch) | |
tree | 95f44b60792c6b0fd74f451c722dcf5f0cbf9971 | |
parent | 5de61e7aa1ba9ac3c7edbea375da2bc8eb1a89ae (diff) |
uio/uio_pci_generic: don't return zero on failure path in probe()
If uio_register_device() fails in probe(), it breaks off initialization,
deallocates all resources, but returns zero.
The patch adds proper error code propagation.
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/uio/uio_pci_generic.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/uio/uio_pci_generic.c b/drivers/uio/uio_pci_generic.c index 077ae12269ce..d0b508b68f3c 100644 --- a/drivers/uio/uio_pci_generic.c +++ b/drivers/uio/uio_pci_generic.c | |||
@@ -91,7 +91,8 @@ static int probe(struct pci_dev *pdev, | |||
91 | gdev->info.handler = irqhandler; | 91 | gdev->info.handler = irqhandler; |
92 | gdev->pdev = pdev; | 92 | gdev->pdev = pdev; |
93 | 93 | ||
94 | if (uio_register_device(&pdev->dev, &gdev->info)) | 94 | err = uio_register_device(&pdev->dev, &gdev->info); |
95 | if (err) | ||
95 | goto err_register; | 96 | goto err_register; |
96 | pci_set_drvdata(pdev, gdev); | 97 | pci_set_drvdata(pdev, gdev); |
97 | 98 | ||