From: Jiri Slaby do not return 0 in one case and return proper values in other 2. Signed-off-by: Jiri Slaby Signed-off-by: Andrew Morton --- drivers/char/stallion.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff -puN drivers/char/stallion.c~char-stallion-proper-fail-return-values drivers/char/stallion.c --- a/drivers/char/stallion.c~char-stallion-proper-fail-return-values +++ a/drivers/char/stallion.c @@ -2177,6 +2177,7 @@ static int __devinit stl_initech(struct if (!panelp) { printk("STALLION: failed to allocate memory " "(size=%Zd)\n", sizeof(struct stlpanel)); + retval = -ENOMEM; goto err_fr; } panelp->magic = STL_PANELMAGIC; @@ -2223,8 +2224,10 @@ static int __devinit stl_initech(struct brdp->nrports += panelp->nrports; brdp->panels[panelnr++] = panelp; if ((brdp->brdtype != BRD_ECHPCI) && - (ioaddr >= (brdp->ioaddr2 + brdp->iosize2))) + (ioaddr >= (brdp->ioaddr2 + brdp->iosize2))) { + retval = -EINVAL; goto err_fr; + } } brdp->nrpanels = panelnr; @@ -2371,6 +2374,7 @@ static int __devinit stl_pciprobe(struct dev_err(&pdev->dev, "too many boards found, " "maximum supported %d\n", STL_MAXBRDS); mutex_unlock(&stl_brdslock); + retval = -ENODEV; goto err_fr; } brdp->brdnr = (unsigned int)brdnr; _