From: sashiko-bot@kernel.org
To: "David Heidelberg" <david@ixit.cz>
Cc: conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org,
dmitry.torokhov@gmail.com, linux-input@vger.kernel.org
Subject: Re: [PATCH v7 3/4] Input: stmfts - support FTS5
Date: Mon, 07 Sep 2026 11:04:41 +0000 [thread overview]
Message-ID: <20260907110442.6BEBE1F00A3E@smtp.kernel.org> (raw)
In-Reply-To: <20260907-stmfts5-v7-3-4a53381cd038@ixit.cz>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
New issues:
- [Medium] The FTS5 driver silently drops all stylus and palm tool-type events because the ABS_MT_TOOL_TYPE capability is never configured on the input device.
- [Medium] Prematurely exiting the event parsing loop on non-terminal events can cause dropped touch events and partial frames.
Pre-existing issues:
- [High] sysfs attribute returns uninitialized kernel memory due to incorrect error check.
--
commit aa502b398bf6eeb31cabf6ce200968e3d20a68a7
Author: David Heidelberg <david@ixit.cz>
Subject: Input: stmfts - support FTS5
This commit introduces support for the FTS5 protocol in the stmfts
touchscreen driver. It adds FTS5-specific functions for device configuration,
input setup (including initial stylus handling), and event parsing.
This is a pre-existing issue, but while reviewing I noticed a potential
memory leak in the sysfs read handler stmfts_sysfs_read_status() that
was not introduced by this patch:
drivers/input/touchscreen/stmfts.c:stmfts_sysfs_read_status() {
...
err = i2c_smbus_read_i2c_block_data(sdata->client, STMFTS_READ_STATUS,
sizeof(status), status);
if (err)
return err;
return sysfs_emit(buf, "%#02x\n", status[0]);
}
[Severity: High]
Does this error check leak uninitialized memory? The function
i2c_smbus_read_i2c_block_data() returns the positive number of bytes read
on success. By treating any non-zero return value as an error, a successful
read will immediately return this positive byte count to the sysfs core,
bypassing sysfs_emit() and potentially leaking up to 4 bytes of uninitialized
kernel memory to userspace.
> diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen/stmfts.c
> --- a/drivers/input/touchscreen/stmfts.c
> +++ b/drivers/input/touchscreen/stmfts.c
[ ... ]
> +static void stmfts5_report_contact_event(struct stmfts_data *sdata,
> + const u8 event[])
> +{
[ ... ]
> + switch (touch_type) {
> + case STMFTS_TOUCH_TYPE_STYLUS:
> + if (sdata->stylus_enabled) {
> + tool = MT_TOOL_PEN;
> + break;
> + }
> + fallthrough; /* Report as finger if stylus not enabled */
[ ... ]
> + input_mt_slot(sdata->input, touch_id);
> + input_mt_report_slot_state(sdata->input, tool, true);
[ ... ]
> +static void stmfts5_parse_events(struct stmfts_data *sdata)
> +{
> + for (int i = 0; i < STMFTS_STACK_DEPTH; i++) {
> + u8 *event = &sdata->data[i * STMFTS_EVENT_SIZE];
[ ... ]
> + switch (event[0] & STMFTS5_MASK_EVENT_ID) {
> + case STMFTS5_EV_STATUS_UPDATE:
> + case STMFTS5_EV_USER_REPORT:
> + case STMFTS5_EV_DEBUG:
> + goto sync;
[Severity: Medium]
Could this premature loop exit cause subsequent touch events in the same
buffer to be dropped?
If STMFTS5_EV_STATUS_UPDATE, STMFTS5_EV_USER_REPORT, or STMFTS5_EV_DEBUG
occurs alongside standard touch events in a single read buffer, the
goto sync; statement will break out of the event parsing loop entirely.
Would using continue be more appropriate here to skip the non-touch event
and continue processing the rest of the buffer?
> +
> + case STMFTS5_EV_MULTI_TOUCH_ENTER:
> + case STMFTS5_EV_MULTI_TOUCH_MOTION:
> + stmfts5_report_contact_event(sdata, event);
> + break;
[ ... ]
> +static int stmfts5_setup_input(struct stmfts_data *sdata)
> +{
[ ... ]
> + input_set_abs_params(sdata->input, ABS_MT_DISTANCE, 0, 255, 0, 0);
> +
> + /* Enable stylus support if requested */
> + sdata->stylus_enabled = device_property_read_bool(dev, "stylus-enabled");
> +
> + return input_mt_init_slots(sdata->input, STMFTS_MAX_FINGERS,
> + INPUT_MT_DIRECT);
> +}
[Severity: Medium]
Does this driver need to configure the ABS_MT_TOOL_TYPE capability for
stylus and palm events to be processed?
In stmfts5_report_contact_event() above, the tool type is reported to the
input core. However, because input_set_abs_params() or input_set_capability()
is not called for ABS_MT_TOOL_TYPE here in stmfts5_setup_input(), the input
subsystem will silently drop these tool type events, degrading the hardware
functionality to basic finger touches.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260907-stmfts5-v7-0-4a53381cd038@ixit.cz?part=3
next prev parent reply other threads:[~2026-09-07 11:04 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 10:50 [PATCH v7 0/4] Input: support for STM FTS5 David Heidelberg via B4 Relay
2026-09-07 10:50 ` David Heidelberg
2026-09-07 10:50 ` [PATCH v7 1/4] Input: stmfts - wait for controller ready after reset David Heidelberg via B4 Relay
2026-09-07 10:50 ` David Heidelberg
2026-09-07 11:06 ` sashiko-bot
2026-09-07 10:50 ` [PATCH v7 2/4] dt-bindings: input: touchscreen: st,stmfts: Introduce STM FTS5 David Heidelberg via B4 Relay
2026-09-07 10:50 ` David Heidelberg
2026-09-07 11:00 ` sashiko-bot
2026-09-07 10:50 ` [PATCH v7 3/4] Input: stmfts - support FTS5 David Heidelberg via B4 Relay
2026-09-07 10:50 ` David Heidelberg
2026-09-07 11:04 ` sashiko-bot [this message]
2026-09-07 10:50 ` [PATCH v7 4/4] arm64: dts: qcom: sdm845-google: Add STM FTS touchscreen support David Heidelberg via B4 Relay
2026-09-07 10:50 ` David Heidelberg
2026-09-07 10:58 ` Abel Vesa
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=20260907110442.6BEBE1F00A3E@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david@ixit.cz \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.