diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2018-02-07 14:47:53 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-14 12:54:09 -0400 |
commit | ad8ce834bfec77c8ae2fbb3a0593ae87bdecebcb (patch) | |
tree | 3dc6cda5b0506f07e82e08204f7c8bbb6f680190 /drivers/parport/parport_serial.c | |
parent | 1089c91111a13e93955057e37f6772c0af629a2a (diff) |
parport: Convert to use managed functions pcim_* and devm_*
This makes the error handling much more simpler than open-coding everything
and in addition makes the probe function smaller an tidier.
Tested-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/parport/parport_serial.c')
-rw-r--r-- | drivers/parport/parport_serial.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c index d0a5bc542bac..050eeb06913a 100644 --- a/drivers/parport/parport_serial.c +++ b/drivers/parport/parport_serial.c | |||
@@ -620,27 +620,23 @@ static int parport_serial_pci_probe(struct pci_dev *dev, | |||
620 | struct parport_serial_private *priv; | 620 | struct parport_serial_private *priv; |
621 | int err; | 621 | int err; |
622 | 622 | ||
623 | priv = kzalloc (sizeof *priv, GFP_KERNEL); | 623 | priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL); |
624 | if (!priv) | 624 | if (!priv) |
625 | return -ENOMEM; | 625 | return -ENOMEM; |
626 | |||
626 | pci_set_drvdata (dev, priv); | 627 | pci_set_drvdata (dev, priv); |
627 | 628 | ||
628 | err = pci_enable_device (dev); | 629 | err = pcim_enable_device(dev); |
629 | if (err) { | 630 | if (err) |
630 | kfree (priv); | ||
631 | return err; | 631 | return err; |
632 | } | ||
633 | 632 | ||
634 | if (parport_register (dev, id)) { | 633 | if (parport_register(dev, id)) |
635 | kfree (priv); | ||
636 | return -ENODEV; | 634 | return -ENODEV; |
637 | } | ||
638 | 635 | ||
639 | if (serial_register (dev, id)) { | 636 | if (serial_register (dev, id)) { |
640 | int i; | 637 | int i; |
641 | for (i = 0; i < priv->num_par; i++) | 638 | for (i = 0; i < priv->num_par; i++) |
642 | parport_pc_unregister_port (priv->port[i]); | 639 | parport_pc_unregister_port (priv->port[i]); |
643 | kfree (priv); | ||
644 | return -ENODEV; | 640 | return -ENODEV; |
645 | } | 641 | } |
646 | 642 | ||
@@ -660,7 +656,6 @@ static void parport_serial_pci_remove(struct pci_dev *dev) | |||
660 | for (i = 0; i < priv->num_par; i++) | 656 | for (i = 0; i < priv->num_par; i++) |
661 | parport_pc_unregister_port (priv->port[i]); | 657 | parport_pc_unregister_port (priv->port[i]); |
662 | 658 | ||
663 | kfree (priv); | ||
664 | return; | 659 | return; |
665 | } | 660 | } |
666 | 661 | ||