mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-11 15:14:03 +08:00
Merge branch 'nfc-fixes'
Duoming Zhou says: ==================== Replace improper checks and fix bugs in nfc subsystem The first patch is used to replace improper checks in netlink related functions of nfc core, the second patch is used to fix bugs in nfcmrvl driver. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b6693611f7
@ -183,6 +183,7 @@ void nfcmrvl_nci_unregister_dev(struct nfcmrvl_private *priv)
|
||||
{
|
||||
struct nci_dev *ndev = priv->ndev;
|
||||
|
||||
nci_unregister_device(ndev);
|
||||
if (priv->ndev->nfc_dev->fw_download_in_progress)
|
||||
nfcmrvl_fw_dnld_abort(priv);
|
||||
|
||||
@ -191,7 +192,6 @@ void nfcmrvl_nci_unregister_dev(struct nfcmrvl_private *priv)
|
||||
if (gpio_is_valid(priv->config.reset_n_io))
|
||||
gpio_free(priv->config.reset_n_io);
|
||||
|
||||
nci_unregister_device(ndev);
|
||||
nci_free_device(ndev);
|
||||
kfree(priv);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -94,7 +94,7 @@ int nfc_dev_up(struct nfc_dev *dev)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -142,7 +142,7 @@ int nfc_dev_down(struct nfc_dev *dev)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -207,7 +207,7 @@ int nfc_start_poll(struct nfc_dev *dev, u32 im_protocols, u32 tm_protocols)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -246,7 +246,7 @@ int nfc_stop_poll(struct nfc_dev *dev)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -291,7 +291,7 @@ int nfc_dep_link_up(struct nfc_dev *dev, int target_index, u8 comm_mode)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -335,7 +335,7 @@ int nfc_dep_link_down(struct nfc_dev *dev)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -401,7 +401,7 @@ int nfc_activate_target(struct nfc_dev *dev, u32 target_idx, u32 protocol)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -448,7 +448,7 @@ int nfc_deactivate_target(struct nfc_dev *dev, u32 target_idx, u8 mode)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -495,7 +495,7 @@ int nfc_data_exchange(struct nfc_dev *dev, u32 target_idx, struct sk_buff *skb,
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
kfree_skb(skb);
|
||||
goto error;
|
||||
@ -552,7 +552,7 @@ int nfc_enable_se(struct nfc_dev *dev, u32 se_idx)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -601,7 +601,7 @@ int nfc_disable_se(struct nfc_dev *dev, u32 se_idx)
|
||||
|
||||
device_lock(&dev->dev);
|
||||
|
||||
if (!device_is_registered(&dev->dev)) {
|
||||
if (dev->shutting_down) {
|
||||
rc = -ENODEV;
|
||||
goto error;
|
||||
}
|
||||
@ -1134,6 +1134,7 @@ int nfc_register_device(struct nfc_dev *dev)
|
||||
dev->rfkill = NULL;
|
||||
}
|
||||
}
|
||||
dev->shutting_down = false;
|
||||
device_unlock(&dev->dev);
|
||||
|
||||
rc = nfc_genl_device_added(dev);
|
||||
@ -1166,12 +1167,10 @@ void nfc_unregister_device(struct nfc_dev *dev)
|
||||
rfkill_unregister(dev->rfkill);
|
||||
rfkill_destroy(dev->rfkill);
|
||||
}
|
||||
dev->shutting_down = true;
|
||||
device_unlock(&dev->dev);
|
||||
|
||||
if (dev->ops->check_presence) {
|
||||
device_lock(&dev->dev);
|
||||
dev->shutting_down = true;
|
||||
device_unlock(&dev->dev);
|
||||
del_timer_sync(&dev->check_pres_timer);
|
||||
cancel_work_sync(&dev->check_pres_work);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user