diff mbox series

Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()

Message ID 20221206125910.2170554-1-yangyingliang@huawei.com (mailing list archive)
State Accepted
Commit 0dff4eccb2edae2754c8a0c7444bf843bd102720
Headers show
Series Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave() | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/CheckPatch success CheckPatch PASS
tedd_an/GitLint success Gitlint PASS
tedd_an/SubjectPrefix success Gitlint PASS
tedd_an/BuildKernel success BuildKernel PASS
tedd_an/BuildKernel32 success BuildKernel32 PASS
tedd_an/TestRunnerSetup success TestRunnerSetup PASS
tedd_an/TestRunner_l2cap-tester success TestRunner PASS
tedd_an/TestRunner_iso-tester success TestRunner PASS
tedd_an/TestRunner_bnep-tester success TestRunner PASS
tedd_an/TestRunner_mgmt-tester success TestRunner PASS
tedd_an/TestRunner_rfcomm-tester success TestRunner PASS
tedd_an/TestRunner_sco-tester success TestRunner PASS
tedd_an/TestRunner_ioctl-tester success TestRunner PASS
tedd_an/TestRunner_mesh-tester success TestRunner PASS
tedd_an/TestRunner_smp-tester success TestRunner PASS
tedd_an/TestRunner_userchan-tester success TestRunner PASS
tedd_an/IncrementalBuild success Incremental Build PASS

Commit Message

Yang Yingliang Dec. 6, 2022, 12:59 p.m. UTC
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@huawei.com>
---
 drivers/bluetooth/btusb.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

bluez.test.bot@gmail.com Dec. 6, 2022, 1:45 p.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=702185

---Test result---

Test Summary:
CheckPatch                    PASS      0.66 seconds
GitLint                       PASS      0.33 seconds
SubjectPrefix                 PASS      0.12 seconds
BuildKernel                   PASS      33.08 seconds
BuildKernel32                 PASS      29.90 seconds
TestRunnerSetup               PASS      427.20 seconds
TestRunner_l2cap-tester       PASS      16.35 seconds
TestRunner_iso-tester         PASS      16.22 seconds
TestRunner_bnep-tester        PASS      5.55 seconds
TestRunner_mgmt-tester        PASS      107.08 seconds
TestRunner_rfcomm-tester      PASS      9.52 seconds
TestRunner_sco-tester         PASS      8.95 seconds
TestRunner_ioctl-tester       PASS      10.27 seconds
TestRunner_mesh-tester        PASS      6.96 seconds
TestRunner_smp-tester         PASS      8.74 seconds
TestRunner_userchan-tester    PASS      5.80 seconds
IncrementalBuild              PASS      30.85 seconds



---
Regards,
Linux Bluetooth
Luiz Augusto von Dentz Dec. 6, 2022, 5:15 p.m. UTC | #2
Hi Yang,

On Tue, Dec 6, 2022 at 5:01 AM Yang Yingliang <yangyingliang@huawei.com> 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@huawei.com>
> ---
>  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?
patchwork-bot+bluetooth@kernel.org Dec. 6, 2022, 5:50 p.m. UTC | #3
Hello:

This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Tue, 6 Dec 2022 20:59:10 +0800 you 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@huawei.com>
> 
> [...]

Here is the summary with links:
  - Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
    https://git.kernel.org/bluetooth/bluetooth-next/c/0dff4eccb2ed

You are awesome, thank you!
diff mbox series

Patch

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);