[PATCH] USB: net2280: set driver data before it is used
This patch (as671) fixes a bug in the error pathway for the net2280 probe routine. A failure during probe will cause the driver to call pci_get_drvdata before the corresponding pci_set_drvdata has been set. The patch also does a kzalloc conversion. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
658ad5e001
commit
9fb81ce636
@ -2833,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
}
|
||||
|
||||
/* alloc, and start init */
|
||||
dev = kmalloc (sizeof *dev, SLAB_KERNEL);
|
||||
dev = kzalloc (sizeof *dev, SLAB_KERNEL);
|
||||
if (dev == NULL){
|
||||
retval = -ENOMEM;
|
||||
goto done;
|
||||
}
|
||||
|
||||
memset (dev, 0, sizeof *dev);
|
||||
pci_set_drvdata (pdev, dev);
|
||||
spin_lock_init (&dev->lock);
|
||||
dev->pdev = pdev;
|
||||
dev->gadget.ops = &net2280_ops;
|
||||
@ -2952,7 +2952,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff;
|
||||
|
||||
/* done */
|
||||
pci_set_drvdata (pdev, dev);
|
||||
INFO (dev, "%s\n", driver_desc);
|
||||
INFO (dev, "irq %s, pci mem %p, chip rev %04x\n",
|
||||
bufp, base, dev->chiprev);
|
||||
|
Loading…
Reference in New Issue
Block a user