From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Xin Zhao <xnzhao@google.com>,
Benjamin Tissoires <benjamin.tissoires@redhat.com>,
Sasha Levin <sashal@kernel.org>,
jikos@kernel.org, linux-input@vger.kernel.org
Subject: [PATCH AUTOSEL 6.1 19/24] HID: core: Fix deadloop in hid_apply_multiplier.
Date: Wed, 15 Feb 2023 15:45:42 -0500 [thread overview]
Message-ID: <20230215204547.2760761-19-sashal@kernel.org> (raw)
In-Reply-To: <20230215204547.2760761-1-sashal@kernel.org>
From: Xin Zhao <xnzhao@google.com>
[ Upstream commit ea427a222d8bdf2bc1a8a6da3ebe247f7dced70c ]
The initial value of hid->collection[].parent_idx if 0. When
Report descriptor doesn't contain "HID Collection", the value
remains as 0.
In the meanwhile, when the Report descriptor fullfill
all following conditions, it will trigger hid_apply_multiplier
function call.
1. Usage page is Generic Desktop Ctrls (0x01)
2. Usage is RESOLUTION_MULTIPLIER (0x48)
3. Contain any FEATURE items
The while loop in hid_apply_multiplier will search the top-most
collection by searching parent_idx == -1. Because all parent_idx
is 0. The loop will run forever.
There is a Report Descriptor triggerring the deadloop
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x48, // Usage (0x48)
0x95, 0x01, // Report Count (1)
0x75, 0x08, // Report Size (8)
0xB1, 0x01, // Feature
Signed-off-by: Xin Zhao <xnzhao@google.com>
Link: https://lore.kernel.org/r/20230130212947.1315941-1-xnzhao@google.com
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hid/hid-core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 3e1803592bd4a..5c72aef3d3dd5 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1202,6 +1202,7 @@ int hid_open_report(struct hid_device *device)
__u8 *end;
__u8 *next;
int ret;
+ int i;
static int (*dispatch_type[])(struct hid_parser *parser,
struct hid_item *item) = {
hid_parser_main,
@@ -1252,6 +1253,8 @@ int hid_open_report(struct hid_device *device)
goto err;
}
device->collection_size = HID_DEFAULT_NUM_COLLECTIONS;
+ for (i = 0; i < HID_DEFAULT_NUM_COLLECTIONS; i++)
+ device->collection[i].parent_idx = -1;
ret = -EINVAL;
while ((next = fetch_item(start, end, &item)) != NULL) {
--
2.39.0
next prev parent reply other threads:[~2023-02-15 20:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 20:45 [PATCH AUTOSEL 6.1 01/24] Fix XFRM-I support for nested ESP tunnels Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 02/24] arm64: dts: rockchip: reduce thermal limits on rk3399-pinephone-pro Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 03/24] arm64: dts: rockchip: drop unused LED mode property from rk3328-roc-cc Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 04/24] ARM: dts: rockchip: add power-domains property to dp node on rk3288 Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 05/24] arm64: dts: rockchip: add missing #interrupt-cells to rk356x pcie2x1 Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 06/24] arm64: dts: rockchip: fix probe of analog sound card on rock-3a Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 07/24] HID: elecom: add support for TrackBall 056E:011C Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 08/24] HID: Ignore battery for Elan touchscreen on Asus TP420IA Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 09/24] ACPI: NFIT: fix a potential deadlock during NFIT teardown Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 10/24] pinctrl: amd: Fix debug output for debounce time Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 11/24] btrfs: send: limit number of clones and allocated memory size Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 12/24] arm64: dts: rockchip: align rk3399 DMC OPP table with bindings Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 13/24] ASoC: rt715-sdca: fix clock stop prepare timeout issue Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 14/24] IB/hfi1: Assign npages earlier Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 15/24] powerpc: Don't select ARCH_WANTS_NO_INSTR Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 16/24] ASoC: SOF: amd: Fix for handling spurious interrupts from DSP Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 17/24] ARM: dts: stihxxx-b2120: fix polarity of reset line of tsin0 port Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 18/24] neigh: make sure used and confirmed times are valid Sasha Levin
2023-02-15 20:45 ` Sasha Levin [this message]
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 20/24] ASoC: codecs: es8326: Fix DTS properties reading Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 21/24] HID: Ignore battery for ELAN touchscreen 29DF on HP Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 22/24] selftests: ocelot: tc_flower_chains: make test_vlan_ingress_modify() more comprehensive Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 23/24] x86/cpu: Add Lunar Lake M Sasha Levin
2023-02-15 20:45 ` [PATCH AUTOSEL 6.1 24/24] drm/amd/display: disable S/G display on DCN 3.1.2/3 Sasha Levin
2023-02-15 20:55 ` Alex Deucher
2023-02-15 21:01 ` Sasha Levin
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=20230215204547.2760761-19-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=benjamin.tissoires@redhat.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=xnzhao@google.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