提交 9fb81ce6 编写于 作者: A Alan Stern 提交者: Greg Kroah-Hartman

[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: NAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 658ad5e0
...@@ -2833,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2833,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
} }
/* alloc, and start init */ /* alloc, and start init */
dev = kmalloc (sizeof *dev, SLAB_KERNEL); dev = kzalloc (sizeof *dev, SLAB_KERNEL);
if (dev == NULL){ if (dev == NULL){
retval = -ENOMEM; retval = -ENOMEM;
goto done; goto done;
} }
memset (dev, 0, sizeof *dev); pci_set_drvdata (pdev, dev);
spin_lock_init (&dev->lock); spin_lock_init (&dev->lock);
dev->pdev = pdev; dev->pdev = pdev;
dev->gadget.ops = &net2280_ops; dev->gadget.ops = &net2280_ops;
...@@ -2952,7 +2952,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -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; dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff;
/* done */ /* done */
pci_set_drvdata (pdev, dev);
INFO (dev, "%s\n", driver_desc); INFO (dev, "%s\n", driver_desc);
INFO (dev, "irq %s, pci mem %p, chip rev %04x\n", INFO (dev, "irq %s, pci mem %p, chip rev %04x\n",
bufp, base, dev->chiprev); bufp, base, dev->chiprev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册