From: "Chris Lu (陸稚泓)" <Chris.Lu@mediatek.com>
To: "luiz.dentz@gmail.com" <luiz.dentz@gmail.com>,
"johan.hedberg@gmail.com" <johan.hedberg@gmail.com>,
"marcel@holtmann.org" <marcel@holtmann.org>
Cc: "pmenzel@molgen.mpg.de" <pmenzel@molgen.mpg.de>,
"Will-CY Lee (李政穎)" <Will-CY.Lee@mediatek.com>,
"Steve Lee (李視誠)" <steve.lee@mediatek.com>,
"SS Wu (巫憲欣)" <ss.wu@mediatek.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Sean Wang" <Sean.Wang@mediatek.com>,
"linux-bluetooth@vger.kernel.org"
<linux-bluetooth@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>
Subject: Re: [PATCH v9 0/6] Bluetooth: btmtk: Add MT7928 support
Date: Sat, 4 Jul 2026 03:37:52 +0000 [thread overview]
Message-ID: <12d1d3bd5c8c270e5118ec327b14ba8b1aee5d76.camel@mediatek.com> (raw)
In-Reply-To: <20260702101437.1787800-1-chris.lu@mediatek.com>
Hi Luiz,
On Thu, 2026-07-02 at 18:14 +0800, Chris Lu wrote:
> This patch series adds support for MT7928 (device ID 0x7935) to the
> btmtk driver, which requires a new two-stage firmware loading process
> with CBMCU firmware.
>
> The series is organized to fix existing issues first, then improve
> code
> quality, and finally add new functionality:
>
> Patch 1 fixes a pre-existing security issue in
> btmtk_setup_firmware_79xx()
> by adding comprehensive firmware size validation to prevent out-of-
> bounds
> memory access with truncated or malicious firmware files.
>
> Patch 2 fixes a pre-existing bug in btmtksdio_setup() where
> btmtk_fw_get_filename() generates the correct firmware path but is
> immediately overwritten by snprintf() with a generic legacy format,
> causing newer chips to request incorrect filenames.
>
> Patch 3 fixes a regression introduced in commit 28b7c5a6db74
> ("Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support") where
> SDIO devices would incorrectly log "BT HW ver: 0x0000" due to
> hardcoded dev_id=0.
>
> Patch 4 refactors existing firmware download code by replacing magic
> numbers with a descriptive BTMTK_WMT_PKT_* enum, making the packet
> sequencing logic clearer.
>
> Patch 5 improves BT firmware logging to provide more useful
> information
> for debugging: adds firmware filename before loading and displays
> chip ID
> as HW version instead of firmware's hwver field.
>
> Patch 6 implements MT7928 firmware download flow, which requires
> loading
> CBMCU firmware before Bluetooth firmware. The CBMCU firmware uses a
> two-phase download sequence: Phase 1 downloads the section containing
> global descriptor and signature data, Phase 2 downloads the remaining
> firmware sections.
>
> Tested on MT7928 hardware with successful firmware loading and
> Bluetooth functionality verification.
>
> Changes in v9:
> - Reorder patches to group SDIO fixes together (Patch 2-3)
> - Patch 1 (was Patch 2): Fix firmware size validation in
> btmtk_setup_firmware_79xx()
> - Patch 2 (was Patch 1): Fix firmware filename override in
> btmtksdio_setup()
> btmtk_fw_get_filename() result was incorrectly overwritten by
> snprintf()
>
> Changes in v8:
> - Add Patch 1 (now Patch 2) to fix firmware size validation in
> btmtk_setup_firmware_79xx()
> - Add Patch 2 (now Patch 3) to fix SDIO device logging regression
> SDIO devices were passing hardcoded 0, causing "BT HW ver: 0x0000"
> log
>
> Changes in v7:
> - Patch 4 (was Patch 1): Extend magic number refactoring to
> btmtk_setup_firmware() in addition to btmtk_setup_firmware_79xx()
> for
> consistency
> - Patch 5 (was Patch 2): Fix potential buffer over-read by
> using %.16s format specifier for hdr->datetime which is a 16-byte
> array that may not be null-terminated
> - Patch 6 (was Patch 3): Apply same %.16s fix to CBMCU firmware
> logging
>
> Changes in v6:
> - Fix timeout handling in btmtk_cbmcu_patch_status() to return -
> ETIMEDOUT
> instead of success when polling exhausts retry count
> - Add integer overflow protection in btmtk_load_cbmcu_firmware()
> using
> check_mul_overflow() and check_add_overflow()
>
> Changes in v5:
> - Split into three patches: refactoring, logging improvement, and
> new feature
> - Add Patch 5 (was Patch 2) to improve BT firmware logging
> independently
> - Apply same logging improvements to CBMCU firmware in Patch 6
> (was Patch 3)
>
> Changes in v4:
> - Split into two patches: refactoring and new feature
> - Add BTMTK_WMT_PKT_* enum to improve code readability
> - Replace magic numbers (0xF0, 0xF1) with descriptive macros
>
> Changes in v3:
> - Add firmware size validation with bounds checking
> - Improve error messages with context information
>
> Changes in v2:
> - Simplified enum usage by consolidating status definitions
>
> Chris Lu (6):
> Bluetooth: btmtk: Add firmware size validation in
> btmtk_setup_firmware_79xx()
> Bluetooth: btmtksdio: Remove redundant firmware filename override
> Bluetooth: btmtksdio: Pass hardware dev_id to mt79xx_setup()
> Bluetooth: btmtk: Replace magic numbers with WMT packet flag enum
> Bluetooth: btmtk: Improve BT firmware logging
> Bluetooth: btmtk: Add MT7928 support
>
> drivers/bluetooth/btmtk.c | 427
> +++++++++++++++++++++++++++++++++-
> drivers/bluetooth/btmtk.h | 9 +
> drivers/bluetooth/btmtksdio.c | 9 +-
> 3 files changed, 430 insertions(+), 15 deletions(-)
>
https://sashiko.dev/#/patchset/20260702101437.1787800-1-chris.lu%40mediatek.com
Sashiko still has one comment on my patch v9, but it states that the
potential risk is unrelated to my change on btmtksdio.c and may be an
existing issue. Regarding this comment, I lean toward addressing it in
the future, focus on MT7928 this time. I'm not sure whether you would
agree to merge the v9 changes first.
Thanks a lot!
Chris Lu
prev parent reply other threads:[~2026-07-04 3:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-02 10:14 [PATCH v9 0/6] Bluetooth: btmtk: Add MT7928 support Chris Lu
2026-07-02 10:14 ` [PATCH v9 1/6] Bluetooth: btmtk: Add firmware size validation in btmtk_setup_firmware_79xx() Chris Lu
2026-07-02 10:51 ` Bluetooth: btmtk: Add MT7928 support bluez.test.bot
2026-07-02 10:14 ` [PATCH v9 2/6] Bluetooth: btmtksdio: Remove redundant firmware filename override Chris Lu
2026-07-02 10:14 ` [PATCH v9 3/6] Bluetooth: btmtksdio: Pass hardware dev_id to mt79xx_setup() Chris Lu
2026-07-02 10:14 ` [PATCH v9 4/6] Bluetooth: btmtk: Replace magic numbers with WMT packet flag enum Chris Lu
2026-07-02 10:14 ` [PATCH v9 5/6] Bluetooth: btmtk: Improve BT firmware logging Chris Lu
2026-07-02 10:14 ` [PATCH v9 6/6] Bluetooth: btmtk: Add MT7928 support Chris Lu
2026-07-04 3:37 ` Chris Lu (陸稚泓) [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=12d1d3bd5c8c270e5118ec327b14ba8b1aee5d76.camel@mediatek.com \
--to=chris.lu@mediatek.com \
--cc=Sean.Wang@mediatek.com \
--cc=Will-CY.Lee@mediatek.com \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
--cc=pmenzel@molgen.mpg.de \
--cc=ss.wu@mediatek.com \
--cc=steve.lee@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox