summaryrefslogtreecommitdiffstats
path: root/drivers/nfc
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2017-06-19 06:08:50 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2017-06-22 17:51:44 -0400
commit7b9fcda91e18f13905e07f0145cc7efbe0e503dc (patch)
tree763db1d7c107ccce22d83467afd33f8c142730b1 /drivers/nfc
parent8597c0920d6f4af66d2100b93599b0c0850dffdd (diff)
NFC: fdp: Convert to use devres API
It looks like there are two leftovers, at least one of which can leak the resource (IRQ). Convert both places to use managed variants of the functions. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc')
-rw-r--r--drivers/nfc/fdp/fdp.c15
-rw-r--r--drivers/nfc/fdp/i2c.c10
2 files changed, 9 insertions, 16 deletions
diff --git a/drivers/nfc/fdp/fdp.c b/drivers/nfc/fdp/fdp.c
index badd8167ac73..ec50027b0d8b 100644
--- a/drivers/nfc/fdp/fdp.c
+++ b/drivers/nfc/fdp/fdp.c
@@ -749,11 +749,9 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
749 u32 protocols; 749 u32 protocols;
750 int r; 750 int r;
751 751
752 info = kzalloc(sizeof(struct fdp_nci_info), GFP_KERNEL); 752 info = devm_kzalloc(dev, sizeof(struct fdp_nci_info), GFP_KERNEL);
753 if (!info) { 753 if (!info)
754 r = -ENOMEM; 754 return -ENOMEM;
755 goto err_info_alloc;
756 }
757 755
758 info->phy = phy; 756 info->phy = phy;
759 info->phy_ops = phy_ops; 757 info->phy_ops = phy_ops;
@@ -775,8 +773,7 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
775 tx_tailroom); 773 tx_tailroom);
776 if (!ndev) { 774 if (!ndev) {
777 nfc_err(dev, "Cannot allocate nfc ndev\n"); 775 nfc_err(dev, "Cannot allocate nfc ndev\n");
778 r = -ENOMEM; 776 return -ENOMEM;
779 goto err_alloc_ndev;
780 } 777 }
781 778
782 r = nci_register_device(ndev); 779 r = nci_register_device(ndev);
@@ -792,9 +789,6 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
792 789
793err_regdev: 790err_regdev:
794 nci_free_device(ndev); 791 nci_free_device(ndev);
795err_alloc_ndev:
796 kfree(info);
797err_info_alloc:
798 return r; 792 return r;
799} 793}
800EXPORT_SYMBOL(fdp_nci_probe); 794EXPORT_SYMBOL(fdp_nci_probe);
@@ -808,7 +802,6 @@ void fdp_nci_remove(struct nci_dev *ndev)
808 802
809 nci_unregister_device(ndev); 803 nci_unregister_device(ndev);
810 nci_free_device(ndev); 804 nci_free_device(ndev);
811 kfree(info);
812} 805}
813EXPORT_SYMBOL(fdp_nci_remove); 806EXPORT_SYMBOL(fdp_nci_remove);
814 807
diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c
index 8a66b1845f27..c955f1f5139d 100644
--- a/drivers/nfc/fdp/i2c.c
+++ b/drivers/nfc/fdp/i2c.c
@@ -303,8 +303,7 @@ static int fdp_nci_i2c_probe(struct i2c_client *client)
303 return -ENODEV; 303 return -ENODEV;
304 } 304 }
305 305
306 phy = devm_kzalloc(dev, sizeof(struct fdp_i2c_phy), 306 phy = devm_kzalloc(dev, sizeof(struct fdp_i2c_phy), GFP_KERNEL);
307 GFP_KERNEL);
308 if (!phy) 307 if (!phy)
309 return -ENOMEM; 308 return -ENOMEM;
310 309
@@ -312,9 +311,10 @@ static int fdp_nci_i2c_probe(struct i2c_client *client)
312 phy->next_read_size = FDP_NCI_I2C_MIN_PAYLOAD; 311 phy->next_read_size = FDP_NCI_I2C_MIN_PAYLOAD;
313 i2c_set_clientdata(client, phy); 312 i2c_set_clientdata(client, phy);
314 313
315 r = request_threaded_irq(client->irq, NULL, fdp_nci_i2c_irq_thread_fn, 314 r = devm_request_threaded_irq(dev, client->irq,
316 IRQF_TRIGGER_RISING | IRQF_ONESHOT, 315 NULL, fdp_nci_i2c_irq_thread_fn,
317 FDP_I2C_DRIVER_NAME, phy); 316 IRQF_TRIGGER_RISING | IRQF_ONESHOT,
317 FDP_I2C_DRIVER_NAME, phy);
318 318
319 if (r < 0) { 319 if (r < 0) {
320 nfc_err(&client->dev, "Unable to register IRQ handler\n"); 320 nfc_err(&client->dev, "Unable to register IRQ handler\n");