summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2007-11-30 11:12:58 +0100
committerJiri Kosina <jkosina@suse.cz>2008-01-28 14:51:22 +0100
commitc4124c9b68bf8ecf1e8afedad3a22e18666cb6f3 (patch)
treee94678db134f72037fa61ddf412bdeb98bf88de7
parent0887b4cb2102e281c123abf1408f218c15fd3ba3 (diff)
downloadlinux-c4124c9b68bf8ecf1e8afedad3a22e18666cb6f3.tar.bz2
HID: remove redundant WARN_ON()s in order not to scare users
The WARN_ON() in implement() and extract() spit out stacktraces and a lot of other information that might make users think that there is something seriously wrong with the system. WARN_ON() should not be deliberately triggerable by userspace application, which these can be. Usually this WARN_ON() triggers when hid2hci utility is sending the data that don't correspond to the device's report descriptor. Convert these messages to more friendly printk(). Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/hid-core.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 2884b036495a..d73a768e176e 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -26,6 +26,7 @@
#include <linux/input.h>
#include <linux/wait.h>
#include <linux/vmalloc.h>
+#include <linux/sched.h>
#include <linux/hid.h>
#include <linux/hiddev.h>
@@ -758,7 +759,9 @@ static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n)
{
u64 x;
- WARN_ON(n > 32);
+ if (n > 32)
+ printk(KERN_WARNING "HID: extract() called with n (%d) > 32! (%s)\n",
+ n, current->comm);
report += offset >> 3; /* adjust byte index */
offset &= 7; /* now only need bit offset into one byte */
@@ -780,8 +783,13 @@ static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u3
__le64 x;
u64 m = (1ULL << n) - 1;
- WARN_ON(n > 32);
+ if (n > 32)
+ printk(KERN_WARNING "HID: implement() called with n (%d) > 32! (%s)\n",
+ n, current->comm);
+ if (value > m)
+ printk(KERN_WARNING "HID: implement() called with too large value %d! (%s)\n",
+ value, current->comm);
WARN_ON(value > m);
value &= m;