From: Jakub Kicinski <kuba@kernel.org>
To: Duoming Zhou <duoming@zju.edu.cn>
Cc: krzysztof.kozlowski@linaro.org, pabeni@redhat.com,
linux-kernel@vger.kernel.org, davem@davemloft.net,
gregkh@linuxfoundation.org, alexander.deucher@amd.com,
akpm@linux-foundation.org, broonie@kernel.org,
netdev@vger.kernel.org, linma@zju.edu.cn
Subject: Re: [PATCH net v4] nfc: nfcmrvl: main: reorder destructive operations in nfcmrvl_nci_unregister_dev to avoid bugs
Date: Wed, 27 Apr 2022 17:45:48 -0700 [thread overview]
Message-ID: <20220427174548.2ae53b84@kernel.org> (raw)
In-Reply-To: <20220427011438.110582-1-duoming@zju.edu.cn>
On Wed, 27 Apr 2022 09:14:38 +0800 Duoming Zhou wrote:
> diff --git a/net/nfc/core.c b/net/nfc/core.c
> index dc7a2404efd..1d91334ee86 100644
> --- a/net/nfc/core.c
> +++ b/net/nfc/core.c
> @@ -25,6 +25,8 @@
> #define NFC_CHECK_PRES_FREQ_MS 2000
>
> int nfc_devlist_generation;
> +/* nfc_download: used to judge whether nfc firmware download could start */
> +static bool nfc_download;
> DEFINE_MUTEX(nfc_devlist_mutex);
>
> /* NFC device ID bitmap */
> @@ -38,7 +40,7 @@ int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name)
>
> device_lock(&dev->dev);
>
> - if (!device_is_registered(&dev->dev)) {
> + if (!device_is_registered(&dev->dev) || !nfc_download) {
> rc = -ENODEV;
> goto error;
> }
> @@ -1134,6 +1136,7 @@ int nfc_register_device(struct nfc_dev *dev)
> dev->rfkill = NULL;
> }
> }
> + nfc_download = true;
> device_unlock(&dev->dev);
>
> rc = nfc_genl_device_added(dev);
> @@ -1166,6 +1169,7 @@ void nfc_unregister_device(struct nfc_dev *dev)
> rfkill_unregister(dev->rfkill);
> rfkill_destroy(dev->rfkill);
> }
> + nfc_download = false;
> device_unlock(&dev->dev);
>
> if (dev->ops->check_presence) {
You can't use a single global variable, there can be many devices
each with their own lock.
Paolo suggested adding a lock, if spin lock doesn't fit the bill
why not add a mutex?
next prev parent reply other threads:[~2022-04-28 0:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-27 1:14 [PATCH net v4] nfc: nfcmrvl: main: reorder destructive operations in nfcmrvl_nci_unregister_dev to avoid bugs Duoming Zhou
2022-04-28 0:45 ` Jakub Kicinski [this message]
2022-04-28 4:03 ` duoming
2022-04-28 7:15 ` [PATCH net v4] nfc: ... device_is_registered() is data race-able Lin Ma
2022-04-28 7:38 ` Greg KH
2022-04-28 7:55 ` Lin Ma
2022-04-28 8:16 ` Greg KH
2022-04-28 8:49 ` Lin Ma
2022-04-28 9:20 ` Greg KH
2022-04-28 13:06 ` Jakub Kicinski
2022-04-28 13:22 ` Lin Ma
2022-04-28 13:37 ` Greg KH
2022-04-28 13:53 ` Lin Ma
2022-04-28 14:12 ` Greg KH
2022-04-29 3:17 ` Lin Ma
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220427174548.2ae53b84@kernel.org \
--to=kuba@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alexander.deucher@amd.com \
--cc=broonie@kernel.org \
--cc=davem@davemloft.net \
--cc=duoming@zju.edu.cn \
--cc=gregkh@linuxfoundation.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linma@zju.edu.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.