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