summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Clayton <stillcompiling@gmail.com>2019-08-12 09:20:22 -0600
committerBenjamin Tissoires <benjamin.tissoires@redhat.com>2019-09-18 15:58:13 +0200
commit0af10eed9b7308187c7865024248b2a2a5aa382a (patch)
tree4c085429812605fff6a320afaee129c5e85c2b77
parentaaeabb121a6271775cef35ec3197e9ef124fdb2a (diff)
downloadlinux-0af10eed9b7308187c7865024248b2a2a5aa382a.tar.bz2
HID: core: fix dmesg flooding if report field larger than 32bit
Only warn once of oversize hid report value field On HP spectre x360 convertible the message: hid-sensor-hub 001F:8087:0AC2.0002: hid_field_extract() called with n (192) > 32! (kworker/1:2) is continually printed many times per second, crowding out all else. Protect dmesg by printing the warning only one time. The size of the hid report field data structure should probably be increased. The data structure is treated as a u32 in Linux, but an unlimited number of bits in the USB hid spec, so there is some rearchitecture needed now that devices are sending more than 32 bits. Signed-off-by: Joshua Clayton <stillcompiling@gmail.com> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-rw-r--r--drivers/hid/hid-core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 210b81a56e1a..3eaee2c37931 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1311,8 +1311,8 @@ u32 hid_field_extract(const struct hid_device *hid, u8 *report,
unsigned offset, unsigned n)
{
if (n > 32) {
- hid_warn(hid, "hid_field_extract() called with n (%d) > 32! (%s)\n",
- n, current->comm);
+ hid_warn_once(hid, "%s() called with n (%d) > 32! (%s)\n",
+ __func__, n, current->comm);
n = 32;
}