2022-05-17 07:04:11

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH net v2] NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc

On 17/05/2022 03:25, Duoming Zhou wrote:
> There are sleep in atomic context bugs when the request to secure
> element of st-nci is timeout. The root cause is that nci_skb_alloc
> with GFP_KERNEL parameter is called in st_nci_se_wt_timeout which is
> a timer handler. The call paths that could trigger bugs are shown below:
>
> (interrupt context 1)
> st_nci_se_wt_timeout
> nci_hci_send_event
> nci_hci_send_data
> nci_skb_alloc(..., GFP_KERNEL) //may sleep
>
> (interrupt context 2)
> st_nci_se_wt_timeout
> nci_hci_send_event
> nci_hci_send_data
> nci_send_data
> nci_queue_tx_data_frags
> nci_skb_alloc(..., GFP_KERNEL) //may sleep
>
> This patch changes allocation mode of nci_skb_alloc from GFP_KERNEL to
> GFP_ATOMIC in order to prevent atomic context sleeping. The GFP_ATOMIC
> flag makes memory allocation operation could be used in atomic context.
>
> Fixes: ed06aeefdac3 ("nfc: st-nci: Rename st21nfcb to st-nci")
> Signed-off-by: Duoming Zhou <[email protected]>
> ---
> Changes in v2:
> - Change the Fixes tag to commit st_nci_se_wt_timeout was added.

Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.

https://elixir.bootlin.com/linux/v5.13/source/Documentation/process/submitting-patches.rst#L543

If a tag was not added on purpose, please state why and what changed.


Reviewed-by: Krzysztof Kozlowski <[email protected]>


Best regards,
Krzysztof


2022-05-17 07:08:04

by Duoming Zhou

[permalink] [raw]
Subject: Re: [PATCH net v2] NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc

Hello,

On Tue, 17 May 2022 08:25:04 +0200 Krzysztof wrote:

> On 17/05/2022 03:25, Duoming Zhou wrote:
> > There are sleep in atomic context bugs when the request to secure
> > element of st-nci is timeout. The root cause is that nci_skb_alloc
> > with GFP_KERNEL parameter is called in st_nci_se_wt_timeout which is
> > a timer handler. The call paths that could trigger bugs are shown below:
> >
> > (interrupt context 1)
> > st_nci_se_wt_timeout
> > nci_hci_send_event
> > nci_hci_send_data
> > nci_skb_alloc(..., GFP_KERNEL) //may sleep
> >
> > (interrupt context 2)
> > st_nci_se_wt_timeout
> > nci_hci_send_event
> > nci_hci_send_data
> > nci_send_data
> > nci_queue_tx_data_frags
> > nci_skb_alloc(..., GFP_KERNEL) //may sleep
> >
> > This patch changes allocation mode of nci_skb_alloc from GFP_KERNEL to
> > GFP_ATOMIC in order to prevent atomic context sleeping. The GFP_ATOMIC
> > flag makes memory allocation operation could be used in atomic context.
> >
> > Fixes: ed06aeefdac3 ("nfc: st-nci: Rename st21nfcb to st-nci")
> > Signed-off-by: Duoming Zhou <[email protected]>
> > ---
> > Changes in v2:
> > - Change the Fixes tag to commit st_nci_se_wt_timeout was added.
>
> Please add Acked-by/Reviewed-by tags when posting new versions. However,
> there's no need to repost patches *only* to add the tags. The upstream
> maintainer will do that for acks received on the version they apply.
>
> https://elixir.bootlin.com/linux/v5.13/source/Documentation/process/submitting-patches.rst#L543
>
> If a tag was not added on purpose, please state why and what changed.

Thank you very much, I will read the documentation carefully.
I'm sorry, I forgot the Reviewed-by tag.

> Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Duoming Zhou