Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 43721
b: refs/heads/master
c: 79cfe7a
h: refs/heads/master
i:
  43719: 853dc4f
v: v3
  • Loading branch information
Jiri Slaby authored and Linus Torvalds committed Dec 8, 2006
1 parent bb90eed commit d65d545
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fc06b5cf858787934110b9398d2d5a0c0493c1dd
refs/heads/master: 79cfe7ab54dbf2784159f5be6b665153cafcee3c
18 changes: 13 additions & 5 deletions trunk/drivers/char/stallion.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ static char stl_unwanted[SC26198_RXFIFOSIZE];

/*****************************************************************************/

static DEFINE_MUTEX(stl_brdslock);
static struct stlbrd *stl_brds[STL_MAXBRDS];

/*
Expand Down Expand Up @@ -2303,7 +2304,6 @@ static int __devinit stl_brdinit(struct stlbrd *brdp)
goto err;
}

stl_brds[brdp->brdnr] = brdp;
if ((brdp->state & BRD_FOUND) == 0) {
printk("STALLION: %s board not found, board=%d io=%x irq=%d\n",
stl_brdnames[brdp->brdtype], brdp->brdnr,
Expand All @@ -2329,8 +2329,6 @@ static int __devinit stl_brdinit(struct stlbrd *brdp)
release_region(brdp->ioaddr1, brdp->iosize1);
if (brdp->iosize2 > 0)
release_region(brdp->ioaddr2, brdp->iosize2);

stl_brds[brdp->brdnr] = NULL;
err:
return retval;
}
Expand Down Expand Up @@ -2383,12 +2381,17 @@ static int __devinit stl_pciprobe(struct pci_dev *pdev,
retval = -ENOMEM;
goto err;
}
mutex_lock(&stl_brdslock);
brdp->brdnr = stl_getbrdnr();
if (brdp->brdnr < 0) {
dev_err(&pdev->dev, "too many boards found, "
"maximum supported %d\n", STL_MAXBRDS);
mutex_unlock(&stl_brdslock);
goto err_fr;
}
stl_brds[brdp->brdnr] = brdp;
mutex_unlock(&stl_brdslock);

brdp->brdtype = brdtype;
brdp->state |= STL_PROBED;

Expand Down Expand Up @@ -2417,11 +2420,13 @@ static int __devinit stl_pciprobe(struct pci_dev *pdev,
brdp->irq = pdev->irq;
retval = stl_brdinit(brdp);
if (retval)
goto err_fr;
goto err_null;

pci_set_drvdata(pdev, brdp);

return 0;
err_null:
stl_brds[brdp->brdnr] = NULL;
err_fr:
kfree(brdp);
err:
Expand Down Expand Up @@ -4735,10 +4740,13 @@ static int __init stallion_module_init(void)
brdp->irqtype = conf.irqtype;
if (stl_brdinit(brdp))
kfree(brdp);
else
else {
stl_brds[brdp->brdnr] = brdp;
stl_nrbrds = i + 1;
}
}

/* this has to be _after_ isa finding because of locking */
retval = pci_register_driver(&stl_pcidriver);
if (retval && stl_nrbrds == 0)
goto err;
Expand Down

0 comments on commit d65d545

Please sign in to comment.