From b27a306e9f206aaf10f22b0c6338d7b97799c7b7 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 3 Feb 2026 14:25:09 +0800 Subject: [PATCH] Bluetooth: btmtk: add status check in mt79xx firmware setup To prevent abnormal controller states, it is necessary to check status in another part of the mt79xx firmware setup. During this process, receiving the 'BTMTK_WMT_PATCH_PROGRESS' status is unexpected. If this occurs, it should be treated as an error, and driver must be prevented from continuing execution. Signed-off-by: Chris Lu Signed-off-by: Luiz Augusto von Dentz --- drivers/bluetooth/btmtk.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c index 0ada5a12130d..5c62b802a199 100644 --- a/drivers/bluetooth/btmtk.c +++ b/drivers/bluetooth/btmtk.c @@ -213,7 +213,6 @@ int btmtk_setup_firmware_79xx(struct hci_dev *hdev, const char *fwname, fw_ptr += section_offset; wmt_params.op = BTMTK_WMT_PATCH_DWNLD; - wmt_params.status = NULL; while (dl_size > 0) { dlen = min_t(int, 250, dl_size); @@ -231,7 +230,14 @@ int btmtk_setup_firmware_79xx(struct hci_dev *hdev, const char *fwname, wmt_params.data = fw_ptr; err = wmt_cmd_sync(hdev, &wmt_params); - if (err < 0) { + /* Status BTMTK_WMT_PATCH_PROGRESS indicates firmware is + * in process of being downloaded, which is not expected to + * occur here. + */ + if (status == BTMTK_WMT_PATCH_PROGRESS) { + err = -EIO; + goto err_release_fw; + } else if (err < 0) { bt_dev_err(hdev, "Failed to send wmt patch dwnld (%d)", err); goto err_release_fw;