summaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2009-09-15 11:59:49 +0200
committerJiri Kosina <jkosina@suse.cz>2009-09-15 12:31:06 +0200
commitd1ff65226c5afe55f9af38a439058f41b71e114f (patch)
tree4ab64bcce3e1cc0ffdd38419fde74c7817e64aba /drivers/hid
parentMerge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jm... (diff)
downloadlinux-d1ff65226c5afe55f9af38a439058f41b71e114f.tar.xz
linux-d1ff65226c5afe55f9af38a439058f41b71e114f.zip
HID: fix non-atomic allocation in hid_input_report
'interrupt' variable can't be used to safely determine whether we are running in atomic context or not, as we might be called from during control transfer completion through hid_ctrl() in atomic context with interrupt == 0. Reported-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-core.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 342b7d36d7bb..ca9bb26c2076 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1089,8 +1089,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
return -1;
}
- buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE,
- interrupt ? GFP_ATOMIC : GFP_KERNEL);
+ buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE, GFP_ATOMIC);
if (!buf) {
report = hid_get_report(report_enum, data);