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>
This commit is contained in:
Andy Shevchenko 2017-06-19 13:08:50 +03:00 коммит произвёл Samuel Ortiz
Родитель 8597c0920d
Коммит 7b9fcda91e
2 изменённых файлов: 9 добавлений и 16 удалений

Просмотреть файл

@ -749,11 +749,9 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
u32 protocols; u32 protocols;
int r; int r;
info = kzalloc(sizeof(struct fdp_nci_info), GFP_KERNEL); info = devm_kzalloc(dev, sizeof(struct fdp_nci_info), GFP_KERNEL);
if (!info) { if (!info)
r = -ENOMEM; return -ENOMEM;
goto err_info_alloc;
}
info->phy = phy; info->phy = phy;
info->phy_ops = phy_ops; info->phy_ops = phy_ops;
@ -775,8 +773,7 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
tx_tailroom); tx_tailroom);
if (!ndev) { if (!ndev) {
nfc_err(dev, "Cannot allocate nfc ndev\n"); nfc_err(dev, "Cannot allocate nfc ndev\n");
r = -ENOMEM; return -ENOMEM;
goto err_alloc_ndev;
} }
r = nci_register_device(ndev); r = nci_register_device(ndev);
@ -792,9 +789,6 @@ int fdp_nci_probe(struct fdp_i2c_phy *phy, struct nfc_phy_ops *phy_ops,
err_regdev: err_regdev:
nci_free_device(ndev); nci_free_device(ndev);
err_alloc_ndev:
kfree(info);
err_info_alloc:
return r; return r;
} }
EXPORT_SYMBOL(fdp_nci_probe); EXPORT_SYMBOL(fdp_nci_probe);
@ -808,7 +802,6 @@ void fdp_nci_remove(struct nci_dev *ndev)
nci_unregister_device(ndev); nci_unregister_device(ndev);
nci_free_device(ndev); nci_free_device(ndev);
kfree(info);
} }
EXPORT_SYMBOL(fdp_nci_remove); EXPORT_SYMBOL(fdp_nci_remove);

Просмотреть файл

@ -303,8 +303,7 @@ static int fdp_nci_i2c_probe(struct i2c_client *client)
return -ENODEV; return -ENODEV;
} }
phy = devm_kzalloc(dev, sizeof(struct fdp_i2c_phy), phy = devm_kzalloc(dev, sizeof(struct fdp_i2c_phy), GFP_KERNEL);
GFP_KERNEL);
if (!phy) if (!phy)
return -ENOMEM; return -ENOMEM;
@ -312,7 +311,8 @@ static int fdp_nci_i2c_probe(struct i2c_client *client)
phy->next_read_size = FDP_NCI_I2C_MIN_PAYLOAD; phy->next_read_size = FDP_NCI_I2C_MIN_PAYLOAD;
i2c_set_clientdata(client, phy); i2c_set_clientdata(client, phy);
r = request_threaded_irq(client->irq, NULL, fdp_nci_i2c_irq_thread_fn, r = devm_request_threaded_irq(dev, client->irq,
NULL, fdp_nci_i2c_irq_thread_fn,
IRQF_TRIGGER_RISING | IRQF_ONESHOT, IRQF_TRIGGER_RISING | IRQF_ONESHOT,
FDP_I2C_DRIVER_NAME, phy); FDP_I2C_DRIVER_NAME, phy);