Re: [PATCH] Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Yang,

On Tue, Dec 6, 2022 at 5:01 AM Yang Yingliang <yangyingliang@xxxxxxxxxx> wrote:
>
> It is not allowed to call kfree_skb() from hardware interrupt
> context or with interrupts being disabled. So replace kfree_skb()
> with dev_kfree_skb_irq() under spin_lock_irqsave().
>
> Fixes: 803b58367ffb ("Bluetooth: btusb: Implement driver internal packet reassembly")
> Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx>
> ---
>  drivers/bluetooth/btusb.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 271963805a38..772f2b0cb10d 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -802,13 +802,13 @@ static inline void btusb_free_frags(struct btusb_data *data)
>
>         spin_lock_irqsave(&data->rxlock, flags);
>
> -       kfree_skb(data->evt_skb);
> +       dev_kfree_skb_irq(data->evt_skb);
>         data->evt_skb = NULL;
>
> -       kfree_skb(data->acl_skb);
> +       dev_kfree_skb_irq(data->acl_skb);
>         data->acl_skb = NULL;
>
> -       kfree_skb(data->sco_skb);
> +       dev_kfree_skb_irq(data->sco_skb);
>         data->sco_skb = NULL;
>
>         spin_unlock_irqrestore(&data->rxlock, flags);
> --
> 2.25.1

This sounds like a better way to handle in the following set as well:

https://patchwork.kernel.org/project/bluetooth/list/?series=701842

Could you please rework the entire set to use dev_kfree_skb_irq?

-- 
Luiz Augusto von Dentz



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux