* [PATCH v2 0/1] Bluetooth: msft: fix vendor event use-after-free during open
@ 2026-08-19 15:08 Ren Wei
2026-08-19 15:08 ` [PATCH v2 1/1] " Ren Wei
0 siblings, 1 reply; 5+ messages in thread
From: Ren Wei @ 2026-08-19 15:08 UTC (permalink / raw)
To: linux-bluetooth
Cc: marcel, luiz.dentz, mcchou, apusaka, mmandlik, alainm, vega,
edragain, weir
From: Yong Wang <edragain@163.com>
Hi Linux maintainers,
This patch fixes a race between `msft_do_open()` and `msft_vendor_evt()`.
Commit 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a
hci_dev's life cycle") changed the open path to reuse the live
`hdev->msft_data` object across power cycles. As a result,
`msft_do_open()` may replace `msft->evt_prefix` while vendor events are
still being processed during device initialization.
At the same time, `msft_vendor_evt()` reads `hdev->msft_data` and checks
the event prefix before taking `hci_dev_lock()`. This can race with the
open path and lead to a use-after-free on the prefix buffer, and on the
failure path it can also observe stale `msft_data` state.
Fix this by reading the supported feature data into temporary storage
first and only publishing the updated MSFT state while holding
`hci_dev_lock()`. Also make `msft_vendor_evt()` take `hci_dev_lock()`
before inspecting the published MSFT state.
We tested the fix and verified that the crash no longer occurs. We also
verified that the existing MSFT monitor functionality still works.
Thanks,
Yong
Changes in v2:
- Rework the cover letter to present this as a race/UAF fix rather than
a security issue.
- Trim reproducer details that are not needed for patch review.
- No functional code changes.
v1 Link: https://lore.kernel.org/all/ea4efa51cc3be16d3eb7726fe5486f0be6c47907.1786092373.git.edragain@163.com/
Yong Wang (1):
Bluetooth: msft: fix vendor event use-after-free during open
net/bluetooth/msft.c | 70 +++++++++++++++++++++++++++-----------------
1 file changed, 43 insertions(+), 27 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH v2 1/1] Bluetooth: msft: fix vendor event use-after-free during open
2026-08-19 15:08 [PATCH v2 0/1] Bluetooth: msft: fix vendor event use-after-free during open Ren Wei
@ 2026-08-19 15:08 ` Ren Wei
2026-08-19 15:20 ` bluez.test.bot
0 siblings, 1 reply; 5+ messages in thread
From: Ren Wei @ 2026-08-19 15:08 UTC (permalink / raw)
To: linux-bluetooth
Cc: marcel, luiz.dentz, mcchou, apusaka, mmandlik, alainm, vega,
edragain, weir
From: Yong Wang <edragain@163.com>
Commit 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a
hci_dev's life cycle") changed msft_do_open() to reuse the live
hdev->msft_data object across power cycles.
That makes msft_do_open() free and replace msft->evt_prefix while the
MSFT extension is already published through hdev->msft_data. On failure
it can also clear hdev->msft_data and free the whole msft object.
At the same time, msft_vendor_evt() reads hdev->msft_data and checks
msft->evt_prefix_len / msft->evt_prefix before taking hci_dev_lock().
Since HCI vendor events may still be processed while HCI_INIT is set,
vendor event handling can race with msft_do_open() and hit a use-after-
free on the old prefix buffer or the msft_data object itself.
Fix this by reading the supported feature data into a temporary object
first, then updating the live MSFT state only while holding
hci_dev_lock(). Also make msft_vendor_evt() take hci_dev_lock() before
reading hdev->msft_data and the event prefix state.
This keeps the published MSFT state stable across the open path and
serializes it against vendor event processing.
Fixes: 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a hci_dev's life cycle")
Cc: stable@vger.kernel.org
Reported-by: Vega <vega@nebusec.ai>
Assisted-by: Codex:GPT-5.4
Signed-off-by: Yong Wang <edragain@163.com>
Signed-off-by: Ren Wei <weir@nebusec.ai>
---
net/bluetooth/msft.c | 70 +++++++++++++++++++++++++++-----------------
1 file changed, 43 insertions(+), 27 deletions(-)
diff --git a/net/bluetooth/msft.c b/net/bluetooth/msft.c
index d7badce8746c..ff8629638299 100644
--- a/net/bluetooth/msft.c
+++ b/net/bluetooth/msft.c
@@ -133,13 +133,19 @@ struct msft_data {
struct mutex filter_lock;
};
+struct msft_supported_features {
+ __u64 features;
+ __u8 evt_prefix_len;
+ __u8 *evt_prefix;
+};
+
bool msft_monitor_supported(struct hci_dev *hdev)
{
return !!(msft_get_features(hdev) & MSFT_FEATURE_MASK_LE_ADV_MONITOR);
}
static bool read_supported_features(struct hci_dev *hdev,
- struct msft_data *msft)
+ struct msft_supported_features *supported)
{
struct msft_cp_read_supported_features cp;
struct msft_rp_read_supported_features *rp;
@@ -166,17 +172,14 @@ static bool read_supported_features(struct hci_dev *hdev,
goto failed;
if (rp->evt_prefix_len > 0) {
- msft->evt_prefix = kmemdup(rp->evt_prefix, rp->evt_prefix_len,
- GFP_KERNEL);
- if (!msft->evt_prefix)
+ supported->evt_prefix =
+ kmemdup(rp->evt_prefix, rp->evt_prefix_len, GFP_KERNEL);
+ if (!supported->evt_prefix)
goto failed;
}
- msft->evt_prefix_len = rp->evt_prefix_len;
- msft->features = __le64_to_cpu(rp->features);
-
- if (msft->features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
- hdev->msft_curve_validity = true;
+ supported->evt_prefix_len = rp->evt_prefix_len;
+ supported->features = __le64_to_cpu(rp->features);
kfree_skb(skb);
return true;
@@ -631,6 +634,7 @@ int msft_resume_sync(struct hci_dev *hdev)
void msft_do_open(struct hci_dev *hdev)
{
struct msft_data *msft = hdev->msft_data;
+ struct msft_supported_features supported = {};
if (hdev->msft_opcode == HCI_OP_NOP)
return;
@@ -642,19 +646,29 @@ void msft_do_open(struct hci_dev *hdev)
bt_dev_dbg(hdev, "Initialize MSFT extension");
- /* Reset existing MSFT data before re-reading */
- kfree(msft->evt_prefix);
- msft->evt_prefix = NULL;
- msft->evt_prefix_len = 0;
- msft->features = 0;
-
- if (!read_supported_features(hdev, msft)) {
- hdev->msft_data = NULL;
- kfree(msft);
+ if (!read_supported_features(hdev, &supported)) {
+ hci_dev_lock(hdev);
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = NULL;
+ msft->evt_prefix_len = 0;
+ msft->features = 0;
+ hci_dev_unlock(hdev);
return;
}
- if (msft_monitor_supported(hdev)) {
+ hci_dev_lock(hdev);
+
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = supported.evt_prefix;
+ msft->evt_prefix_len = supported.evt_prefix_len;
+ msft->features = supported.features;
+
+ if (supported.features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
+ hdev->msft_curve_validity = true;
+
+ hci_dev_unlock(hdev);
+
+ if (supported.features & MSFT_FEATURE_MASK_LE_ADV_MONITOR) {
msft->resuming = true;
msft_set_filter_enable(hdev, true);
/* Monitors get removed on power off, so we need to explicitly
@@ -1067,12 +1081,15 @@ static void msft_monitor_device_evt(struct hci_dev *hdev, struct sk_buff *skb)
void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
{
- struct msft_data *msft = hdev->msft_data;
+ struct msft_data *msft;
u8 *evt_prefix;
u8 *evt;
+ hci_dev_lock(hdev);
+
+ msft = hdev->msft_data;
if (!msft)
- return;
+ goto unlock;
/* When the extension has defined an event prefix, check that it
* matches, and otherwise just return.
@@ -1080,23 +1097,21 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
if (msft->evt_prefix_len > 0) {
evt_prefix = msft_skb_pull(hdev, skb, 0, msft->evt_prefix_len);
if (!evt_prefix)
- return;
+ goto unlock;
if (memcmp(evt_prefix, msft->evt_prefix, msft->evt_prefix_len))
- return;
+ goto unlock;
}
/* Every event starts at least with an event code and the rest of
* the data is variable and depends on the event code.
*/
if (skb->len < 1)
- return;
+ goto unlock;
evt = msft_skb_pull(hdev, skb, 0, sizeof(*evt));
if (!evt)
- return;
-
- hci_dev_lock(hdev);
+ goto unlock;
switch (*evt) {
case MSFT_EV_LE_MONITOR_DEVICE:
@@ -1110,6 +1125,7 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
break;
}
+unlock:
hci_dev_unlock(hdev);
}
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH RESEND 1/1] Bluetooth: msft: fix vendor event use-after-free during open
@ 2026-08-07 17:14 Ren Wei
2026-08-07 17:33 ` bluez.test.bot
0 siblings, 1 reply; 5+ messages in thread
From: Ren Wei @ 2026-08-07 17:14 UTC (permalink / raw)
To: linux-bluetooth
Cc: marcel, luiz.dentz, mcchou, mmandlik, alainm, abhishekpandit,
apusaka, vega, edragain, enjou1224z
From: Yong Wang <edragain@163.com>
Commit 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a
hci_dev's life cycle") changed msft_do_open() to reuse the live
hdev->msft_data object across power cycles.
That makes msft_do_open() free and replace msft->evt_prefix while the
MSFT extension is already published through hdev->msft_data. On failure
it can also clear hdev->msft_data and free the whole msft object.
At the same time, msft_vendor_evt() reads hdev->msft_data and checks
msft->evt_prefix_len / msft->evt_prefix before taking hci_dev_lock().
Since HCI vendor events may still be processed while HCI_INIT is set,
vendor event handling can race with msft_do_open() and hit a use-after-
free on the old prefix buffer or the msft_data object itself.
Fix this by reading the supported feature data into a temporary object
first, then updating the live MSFT state only while holding
hci_dev_lock(). Also make msft_vendor_evt() take hci_dev_lock() before
reading hdev->msft_data and the event prefix state.
This keeps the published MSFT state stable across the open path and
serializes it against vendor event processing.
Fixes: 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a hci_dev's life cycle")
Cc: stable@vger.kernel.org
Reported-by: Vega <vega@nebusec.ai>
Assisted-by: Codex:GPT-5.4
Signed-off-by: Yong Wang <edragain@163.com>
Signed-off-by: Ren Wei <enjou1224z@gmail.com>
---
net/bluetooth/msft.c | 70 +++++++++++++++++++++++++++-----------------
1 file changed, 43 insertions(+), 27 deletions(-)
diff --git a/net/bluetooth/msft.c b/net/bluetooth/msft.c
index d7badce8746c..ff8629638299 100644
--- a/net/bluetooth/msft.c
+++ b/net/bluetooth/msft.c
@@ -133,13 +133,19 @@ struct msft_data {
struct mutex filter_lock;
};
+struct msft_supported_features {
+ __u64 features;
+ __u8 evt_prefix_len;
+ __u8 *evt_prefix;
+};
+
bool msft_monitor_supported(struct hci_dev *hdev)
{
return !!(msft_get_features(hdev) & MSFT_FEATURE_MASK_LE_ADV_MONITOR);
}
static bool read_supported_features(struct hci_dev *hdev,
- struct msft_data *msft)
+ struct msft_supported_features *supported)
{
struct msft_cp_read_supported_features cp;
struct msft_rp_read_supported_features *rp;
@@ -166,17 +172,14 @@ static bool read_supported_features(struct hci_dev *hdev,
goto failed;
if (rp->evt_prefix_len > 0) {
- msft->evt_prefix = kmemdup(rp->evt_prefix, rp->evt_prefix_len,
- GFP_KERNEL);
- if (!msft->evt_prefix)
+ supported->evt_prefix =
+ kmemdup(rp->evt_prefix, rp->evt_prefix_len, GFP_KERNEL);
+ if (!supported->evt_prefix)
goto failed;
}
- msft->evt_prefix_len = rp->evt_prefix_len;
- msft->features = __le64_to_cpu(rp->features);
-
- if (msft->features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
- hdev->msft_curve_validity = true;
+ supported->evt_prefix_len = rp->evt_prefix_len;
+ supported->features = __le64_to_cpu(rp->features);
kfree_skb(skb);
return true;
@@ -631,6 +634,7 @@ int msft_resume_sync(struct hci_dev *hdev)
void msft_do_open(struct hci_dev *hdev)
{
struct msft_data *msft = hdev->msft_data;
+ struct msft_supported_features supported = {};
if (hdev->msft_opcode == HCI_OP_NOP)
return;
@@ -642,19 +646,29 @@ void msft_do_open(struct hci_dev *hdev)
bt_dev_dbg(hdev, "Initialize MSFT extension");
- /* Reset existing MSFT data before re-reading */
- kfree(msft->evt_prefix);
- msft->evt_prefix = NULL;
- msft->evt_prefix_len = 0;
- msft->features = 0;
-
- if (!read_supported_features(hdev, msft)) {
- hdev->msft_data = NULL;
- kfree(msft);
+ if (!read_supported_features(hdev, &supported)) {
+ hci_dev_lock(hdev);
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = NULL;
+ msft->evt_prefix_len = 0;
+ msft->features = 0;
+ hci_dev_unlock(hdev);
return;
}
- if (msft_monitor_supported(hdev)) {
+ hci_dev_lock(hdev);
+
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = supported.evt_prefix;
+ msft->evt_prefix_len = supported.evt_prefix_len;
+ msft->features = supported.features;
+
+ if (supported.features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
+ hdev->msft_curve_validity = true;
+
+ hci_dev_unlock(hdev);
+
+ if (supported.features & MSFT_FEATURE_MASK_LE_ADV_MONITOR) {
msft->resuming = true;
msft_set_filter_enable(hdev, true);
/* Monitors get removed on power off, so we need to explicitly
@@ -1067,12 +1081,15 @@ static void msft_monitor_device_evt(struct hci_dev *hdev, struct sk_buff *skb)
void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
{
- struct msft_data *msft = hdev->msft_data;
+ struct msft_data *msft;
u8 *evt_prefix;
u8 *evt;
+ hci_dev_lock(hdev);
+
+ msft = hdev->msft_data;
if (!msft)
- return;
+ goto unlock;
/* When the extension has defined an event prefix, check that it
* matches, and otherwise just return.
@@ -1080,23 +1097,21 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
if (msft->evt_prefix_len > 0) {
evt_prefix = msft_skb_pull(hdev, skb, 0, msft->evt_prefix_len);
if (!evt_prefix)
- return;
+ goto unlock;
if (memcmp(evt_prefix, msft->evt_prefix, msft->evt_prefix_len))
- return;
+ goto unlock;
}
/* Every event starts at least with an event code and the rest of
* the data is variable and depends on the event code.
*/
if (skb->len < 1)
- return;
+ goto unlock;
evt = msft_skb_pull(hdev, skb, 0, sizeof(*evt));
if (!evt)
- return;
-
- hci_dev_lock(hdev);
+ goto unlock;
switch (*evt) {
case MSFT_EV_LE_MONITOR_DEVICE:
@@ -1110,6 +1125,7 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
break;
}
+unlock:
hci_dev_unlock(hdev);
}
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 1/1] Bluetooth: msft: fix vendor event use-after-free during open
@ 2026-07-27 17:16 Ren Wei
2026-07-27 18:45 ` bluez.test.bot
0 siblings, 1 reply; 5+ messages in thread
From: Ren Wei @ 2026-07-27 17:16 UTC (permalink / raw)
To: linux-bluetooth
Cc: marcel, luiz.dentz, mcchou, abhishekpandit, alainm, mmandlik,
vega, edragain, enjou1224z
From: Yong Wang <edragain@163.com>
Commit 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a
hci_dev's life cycle") changed msft_do_open() to reuse the live
hdev->msft_data object across power cycles.
That makes msft_do_open() free and replace msft->evt_prefix while the
MSFT extension is already published through hdev->msft_data. On failure
it can also clear hdev->msft_data and free the whole msft object.
At the same time, msft_vendor_evt() reads hdev->msft_data and checks
msft->evt_prefix_len / msft->evt_prefix before taking hci_dev_lock().
Since HCI vendor events may still be processed while HCI_INIT is set,
vendor event handling can race with msft_do_open() and hit a use-after-
free on the old prefix buffer or the msft_data object itself.
Fix this by reading the supported feature data into a temporary object
first, then updating the live MSFT state only while holding
hci_dev_lock(). Also make msft_vendor_evt() take hci_dev_lock() before
reading hdev->msft_data and the event prefix state.
This keeps the published MSFT state stable across the open path and
serializes it against vendor event processing.
Fixes: 5031ffcc79b8 ("Bluetooth: Keep MSFT ext info throughout a hci_dev's life cycle")
Cc: stable@vger.kernel.org
Reported-by: Vega <vega@nebusec.ai>
Assisted-by: Codex:GPT-5.4
Signed-off-by: Yong Wang <edragain@163.com>
Signed-off-by: Ren Wei <enjou1224z@gmail.com>
---
net/bluetooth/msft.c | 70 +++++++++++++++++++++++++++-----------------
1 file changed, 43 insertions(+), 27 deletions(-)
diff --git a/net/bluetooth/msft.c b/net/bluetooth/msft.c
index d7badce8746c..ff8629638299 100644
--- a/net/bluetooth/msft.c
+++ b/net/bluetooth/msft.c
@@ -133,13 +133,19 @@ struct msft_data {
struct mutex filter_lock;
};
+struct msft_supported_features {
+ __u64 features;
+ __u8 evt_prefix_len;
+ __u8 *evt_prefix;
+};
+
bool msft_monitor_supported(struct hci_dev *hdev)
{
return !!(msft_get_features(hdev) & MSFT_FEATURE_MASK_LE_ADV_MONITOR);
}
static bool read_supported_features(struct hci_dev *hdev,
- struct msft_data *msft)
+ struct msft_supported_features *supported)
{
struct msft_cp_read_supported_features cp;
struct msft_rp_read_supported_features *rp;
@@ -166,17 +172,14 @@ static bool read_supported_features(struct hci_dev *hdev,
goto failed;
if (rp->evt_prefix_len > 0) {
- msft->evt_prefix = kmemdup(rp->evt_prefix, rp->evt_prefix_len,
- GFP_KERNEL);
- if (!msft->evt_prefix)
+ supported->evt_prefix =
+ kmemdup(rp->evt_prefix, rp->evt_prefix_len, GFP_KERNEL);
+ if (!supported->evt_prefix)
goto failed;
}
- msft->evt_prefix_len = rp->evt_prefix_len;
- msft->features = __le64_to_cpu(rp->features);
-
- if (msft->features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
- hdev->msft_curve_validity = true;
+ supported->evt_prefix_len = rp->evt_prefix_len;
+ supported->features = __le64_to_cpu(rp->features);
kfree_skb(skb);
return true;
@@ -631,6 +634,7 @@ int msft_resume_sync(struct hci_dev *hdev)
void msft_do_open(struct hci_dev *hdev)
{
struct msft_data *msft = hdev->msft_data;
+ struct msft_supported_features supported = {};
if (hdev->msft_opcode == HCI_OP_NOP)
return;
@@ -642,19 +646,29 @@ void msft_do_open(struct hci_dev *hdev)
bt_dev_dbg(hdev, "Initialize MSFT extension");
- /* Reset existing MSFT data before re-reading */
- kfree(msft->evt_prefix);
- msft->evt_prefix = NULL;
- msft->evt_prefix_len = 0;
- msft->features = 0;
-
- if (!read_supported_features(hdev, msft)) {
- hdev->msft_data = NULL;
- kfree(msft);
+ if (!read_supported_features(hdev, &supported)) {
+ hci_dev_lock(hdev);
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = NULL;
+ msft->evt_prefix_len = 0;
+ msft->features = 0;
+ hci_dev_unlock(hdev);
return;
}
- if (msft_monitor_supported(hdev)) {
+ hci_dev_lock(hdev);
+
+ kfree(msft->evt_prefix);
+ msft->evt_prefix = supported.evt_prefix;
+ msft->evt_prefix_len = supported.evt_prefix_len;
+ msft->features = supported.features;
+
+ if (supported.features & MSFT_FEATURE_MASK_CURVE_VALIDITY)
+ hdev->msft_curve_validity = true;
+
+ hci_dev_unlock(hdev);
+
+ if (supported.features & MSFT_FEATURE_MASK_LE_ADV_MONITOR) {
msft->resuming = true;
msft_set_filter_enable(hdev, true);
/* Monitors get removed on power off, so we need to explicitly
@@ -1067,12 +1081,15 @@ static void msft_monitor_device_evt(struct hci_dev *hdev, struct sk_buff *skb)
void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
{
- struct msft_data *msft = hdev->msft_data;
+ struct msft_data *msft;
u8 *evt_prefix;
u8 *evt;
+ hci_dev_lock(hdev);
+
+ msft = hdev->msft_data;
if (!msft)
- return;
+ goto unlock;
/* When the extension has defined an event prefix, check that it
* matches, and otherwise just return.
@@ -1080,23 +1097,21 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
if (msft->evt_prefix_len > 0) {
evt_prefix = msft_skb_pull(hdev, skb, 0, msft->evt_prefix_len);
if (!evt_prefix)
- return;
+ goto unlock;
if (memcmp(evt_prefix, msft->evt_prefix, msft->evt_prefix_len))
- return;
+ goto unlock;
}
/* Every event starts at least with an event code and the rest of
* the data is variable and depends on the event code.
*/
if (skb->len < 1)
- return;
+ goto unlock;
evt = msft_skb_pull(hdev, skb, 0, sizeof(*evt));
if (!evt)
- return;
-
- hci_dev_lock(hdev);
+ goto unlock;
switch (*evt) {
case MSFT_EV_LE_MONITOR_DEVICE:
@@ -1110,6 +1125,7 @@ void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
break;
}
+unlock:
hci_dev_unlock(hdev);
}
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* RE: Bluetooth: msft: fix vendor event use-after-free during open
2026-07-27 17:16 [PATCH 1/1] " Ren Wei
@ 2026-07-27 18:45 ` bluez.test.bot
0 siblings, 0 replies; 5+ messages in thread
From: bluez.test.bot @ 2026-07-27 18:45 UTC (permalink / raw)
To: linux-bluetooth, enjou1224z
[-- Attachment #1: Type: text/plain, Size: 3911 bytes --]
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=1135312
---Test result---
Test Summary:
CheckPatch FAIL 0.78 seconds
VerifyFixes PASS 0.13 seconds
VerifySignedoff PASS 0.13 seconds
GitLint PASS 0.33 seconds
SubjectPrefix PASS 0.12 seconds
BuildKernel PASS 25.31 seconds
CheckAllWarning PASS 28.26 seconds
CheckSparse PASS 27.48 seconds
BuildKernel32 PASS 24.73 seconds
CheckKernelLLVM SKIP 0.00 seconds
TestRunnerSetup PASS 464.65 seconds
TestRunner_l2cap-tester PASS 59.11 seconds
TestRunner_iso-tester FAIL 93.02 seconds
TestRunner_bnep-tester PASS 19.13 seconds
TestRunner_mgmt-tester FAIL 224.78 seconds
TestRunner_rfcomm-tester PASS 25.80 seconds
TestRunner_sco-tester PASS 30.98 seconds
TestRunner_ioctl-tester PASS 26.46 seconds
TestRunner_mesh-tester FAIL 25.97 seconds
TestRunner_smp-tester PASS 23.00 seconds
TestRunner_userchan-tester PASS 20.50 seconds
TestRunner_6lowpan-tester PASS 23.69 seconds
IncrementalBuild PASS 25.21 seconds
Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script
Output:
[1/1] Bluetooth: msft: fix vendor event use-after-free during open
WARNING: Reported-by: should be immediately followed by Closes: with a URL to the report
#134:
Reported-by: Vega <vega@nebusec.ai>
Assisted-by: Codex:GPT-5.4
total: 0 errors, 1 warnings, 0 checks, 139 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/patch/14713461.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
##############################
Test: CheckKernelLLVM - SKIP
Desc: Build kernel with LLVM + context analysis
Output:
Clang not found
##############################
Test: TestRunner_iso-tester - FAIL
Desc: Run iso-tester with test-runner
Output:
Total: 141, Passed: 134 (95.0%), Failed: 7, Not Run: 0
Failed Test Cases
ISO Disconnect - Success Timed out 1.848 seconds
ISO Reconnect - Success Timed out 1.990 seconds
ISO Reconnect Send and Receive #16 - Success Timed out 1.994 seconds
ISO Reconnect AC 6(i) - Success Timed out 2.655 seconds
ISO Reconnect AC 6(ii) - Success Timed out 2.006 seconds
ISO Broadcaster Reconnect - Success Timed out 1.949 seconds
ISO Broadcaster Receiver Defer Reconnect - Success Timed out 2.410 seconds
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 489 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.249 seconds
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Timed out 2.804 seconds
Mesh - Send cancel - 2 Timed out 1.987 seconds
https://github.com/bluez/bluetooth-next/pull/501
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-19 15:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19 15:08 [PATCH v2 0/1] Bluetooth: msft: fix vendor event use-after-free during open Ren Wei
2026-08-19 15:08 ` [PATCH v2 1/1] " Ren Wei
2026-08-19 15:20 ` bluez.test.bot
-- strict thread matches above, loose matches on Subject: below --
2026-08-07 17:14 [PATCH RESEND 1/1] " Ren Wei
2026-08-07 17:33 ` bluez.test.bot
2026-07-27 17:16 [PATCH 1/1] " Ren Wei
2026-07-27 18:45 ` bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).