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:
Родитель
8597c0920d
Коммит
7b9fcda91e
|
@ -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,9 +311,10 @@ 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,
|
||||||
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
|
NULL, fdp_nci_i2c_irq_thread_fn,
|
||||||
FDP_I2C_DRIVER_NAME, phy);
|
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
|
||||||
|
FDP_I2C_DRIVER_NAME, phy);
|
||||||
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
nfc_err(&client->dev, "Unable to register IRQ handler\n");
|
nfc_err(&client->dev, "Unable to register IRQ handler\n");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче