aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-linus' of ↵Linus Torvalds2009-07-222-3/+7
|\ | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: HID: Move dereferences below a NULL test HID: hiddev, fix lock imbalance
| * HID: Move dereferences below a NULL testJulia Lawall2009-07-201-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the NULL test is necessary, then the dereferences should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ type T; expression E,E1; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E=E1 when != i if (E == NULL||...) S + i = E->fld; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: hiddev, fix lock imbalanceJiri Slaby2009-06-221-1/+3
| | | | | | | | | | | | | | | | Add omitted BKL to one switch/case. Cc: Stable <stable@kernel.org> Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | headers: smp_lock.h reduxAlexey Dobriyan2009-07-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | * Remove smp_lock.h from files which don't need it (including some headers!) * Add smp_lock.h to files which do need it * Make smp_lock.h include conditional in hardirq.h It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPT This will make hardirq.h inclusion cheaper for every PREEMPT=n config (which includes allmodconfig/allyesconfig, BTW) Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | Driver Core: usb: add nodename support for usb drivers.Kay Sievers2009-06-151-1/+6
|/ | | | | | | | | | This adds support for USB drivers to report their requested nodename to userspace. It also updates a number of USB drivers to provide the needed subdirectory and device name to be used for them. Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Jan Blunck <jblunck@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
*-. Merge branches 'upstream' and 'ntrig-multitouch' into for-linusJiri Kosina2009-06-1216-51/+805
|\ \
| | * HID: Multitouch support for the N-Trig touchscreenStephane Chatty2009-05-201-11/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds support for multitouch interaction on the N-Trig touchscreen, using the new ABS_MT_* input constants. Single touch support works as previously. This code was tested against two versions of the N- Trig firmware: one that supports dual pen/finger single touch, and one that supports finger multitouch but no pen at all. Copyright notices that looked wrong were removed, as it seems that there is only code written in 2009 by Rafin Rubin and Stephane Chatty in this file. Signed-off-by: Stephane Chatty <chatty@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: add new multitouch and digitizer contantsStephane Chatty2009-05-201-2/+21
| |/ |/| | | | | | | | | | | | | | | | | | | Added constants to hid.h for all digitizer usages (including the new multitouch ones that are not yet in the official USB spec but are being pushed by Microsft as described in their paper "Digitizer Drivers for Windows Touch and Pen-Based Computers"). Updated hid-debug.c to support the new MT input constants such as ABS_MT_POSITION_X. Signed-off-by: Stephane Chatty <chatty@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: fix inverted wheel for bluetooth version of apple mighty mouseJiri Kosina2009-06-101-4/+0
| | | | | | | | | | | | | | | | Bluetooth version of Apple Mighty mouse (0x05ac/0x030c) doesn't, according to multiple reports on linux-input@, need the same quirk as the USB version of this mouse (0x05ac/0x0304) does. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: no more reinitializtion is needed in post_resetJiri Kosina2009-06-041-4/+3
| | | | | | | | | | | | | | | | | | No more reinitialization is needed in the post reset hook, remove the FIXME comment. While at it, clean up whitespaces in the immediate surrounding. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: hidraw -- fix comment about accepted devicesJiri Kosina2009-06-041-4/+1
| | | | | | | | | | | | | | | | hidraw accepts any devices, no matter if the device has already been claimed by other HID driver (hid-input, hidraw), and this is intended to stay. Fix up the comment to reflect reality. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: autocentering support for Logitech Force 3D ProSergey Belyashov2009-05-151-1/+7
| | | | | | | | | | | | | | This patch adds autocentering support for Logitech Force 3D Pro. Signed-off-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: fix hid-ff drivers so that devices work even without ff supportJiri Kosina2009-05-156-24/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the hid-*ff force feedback drivers, which claim the blacklisted device on a HID bus, are only compiled in if the user selects force feedback support. However we want the device to be supported even when the kernel is configured without force feedback. This patch fixes the drivers in a way that they get compiled even if force feedback is turned off; all the force feedback support code is compiled out in such case, and the driver works as a usual driver on HID bus, claiming and initializing the device, making it operational without FF effects. Reported-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: force feedback support for SmartJoy PLUS PS2/USB adapterJussi Kivilinna2009-05-155-0/+198
| | | | | | | | | | | | | | | | | | | | | | This driver adds force feedback support for SmartJoy PLUS PS2/USB adapter. I made this driver one device spesific instead of making generic 'wisegroup-ff' because I have another Wisegroup PS2/USB adapter that doesn't work same way as SmartJoy PLUS. If another device that is compatible pops up, this driver could be then renamed to something more generic. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: Wacom Graphire Bluetooth driverBastien Nocera2009-05-135-0/+269
| | | | | | | | | | | | | | | | | | | | | | | | | | Based on the work by Andrew Zabolotny, an HID driver for the Bluetooth Wacom tablet. This is required as it uses a slightly different protocols from what's currently support by the drivers/input/wacom* driver, and those only support USB. A user-space patch is required to activate mode 2 of the Wacom tablet, as hidp does not support hid_output_raw_report. Signed-off-by: Bastien Nocera <hadess@hadess.net> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: autocentering support for Logitech G25 Racing WheelSergey Belyashov2009-05-131-1/+1
|/ | | | | | | | | | | | Some months ago I send patch which adds autocentering for Logitech MOMO Wheel. Now I have access to Logitech G25 Racing Wheel and test autocentering for it. I write patch for current kernel to support autocentering for G25 in legacy mode (this device supports other modes, but after switching device reconnects with ID 0xc299 and FF support comes out) and others Logitech (Driving Force, Formula Force Ex etc) wheels with ID 046d:c294. Signed-off-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: add NOGET quirk for devices from CH ProductsAlan Stern2009-05-112-0/+8
| | | | | | | | | | | | | | | This patch (as1240) adds the NOGET quirk for three devices from CH Products: the Pro pedals, the Combatstick joystick, and the Flight-Sim yoke. Without these quirks, the devices haven't worked for many kernel releases. Sometimes replugging them after boot-up would get them to work and sometimes they wouldn't work at all. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Reported-by: Sean Hildebrand <silverwraithii@gmail.com> Reported-by: Sid Boyce <sboyce@blueyonder.co.uk> Tested-by: Sean Hildebrand <silverwraithii@gmail.com> Tested-by: Sid Boyce <sboyce@blueyonder.co.uk> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: fix dropped device-specific quirksZoltan Karcagi2009-05-111-1/+1
| | | | | | | | | | | Device-specific quirks are set up correctly in their respective vendor-specific driver, then get overwritten in usbhid_parse(). This is only issue for device-specific NOGET quirks being set by driver for a few devices out there. Signed-off-by: Zoltan Karcagi <zkr@freemail.hu> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: fix oops in hid_check_keys_pressed()Jiri Kosina2009-05-021-0/+3
| | | | | | | | | | | | If the device is not claimed by hid-input (i.e devices driver by userspace hiddev/hidraw-based drivers, or completely detached from HID and driver by libusb), we must not check the hid->inptus, as it is not guaranteed to be initialized, as this is performed only for devices handled by hid-input. Reported-by: Guillaume Chazarain <guichaz@gmail.com> Tested-by: Guillaume Chazarain <guichaz@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: fix possible deadlock in usbhid_close()Oliver Neukum2009-04-291-1/+1
| | | | | | | | | | | This patch switches usbhid_close() from flush_scheduled_work() to canceling the outstanding work. This fixes a possible deadlock due to work taking the mutex usbhid_close() holds. Lockdep reported the problem. Signed-off-by: Oliver Neukum <oliver@neukum.org> -- Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: Fix the support for apple mini aluminium keyboardUlrich Dangel2009-04-291-1/+1
| | | | | | | | | Quirks for the apple mini keyboard was recently added but keyboard was recognized as a powerbook keyboard. Adjusted boundary to the lowest product id for the apple mini keyboard to get the right translation. Signed-off-by: Ulrich Dangel <uli@spamt.net> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: Add support for the G25 force feedback wheel in native modeChristophe Borivant2009-04-173-0/+4
| | | | | | | | | | | | | | | | | | | Add Product Id 0xc299 for the Logitech G25 force feedback wheel The Logitech G25 force feedback wheel, is first recognize by the kernel with the product id "0xc294". In this mode, we can't use all the axes and buttons of the wheel. Using a userland utility, it is possible to make the wheel switch to native mode -- http://svn.vdrift.net/viewvc.cgi/trunk/tools/G25manage/?root=VDrift In native mode, the wheel change its id number to "0xc299". The packet that needs to be sent to the wheel to swtich to native mode and change its PID is { 0xf8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 } Signed-off-by: Christophe Borivant <christophe.borivant@wanadoo.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hidraw -- fix missing unlocks in unlocked_ioctlDan Carpenter2009-04-071-4/+8
| | | | | | | | | | There were 2 places that returned directly instead of releasing their locks. I sent a fix for this file earlier but ended up missing these spots. I think what happened is that I have improved my checker script since then... Or maybe I just screwed up. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* Merge branch 'for-linus' of ↵Linus Torvalds2009-04-0333-292/+844
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: HID: remove compat stuff HID: constify arrays of struct apple_key_translation HID: add support for Kye/Genius Ergo 525V HID: Support Apple mini aluminum keyboard HID: support for Kensington slimblade device HID: DragonRise game controller force feedback driver HID: add support for another version of 0e8f:0003 device in hid-pl HID: fix race between usb_register_dev() and hiddev_open() HID: bring back possibility to specify vid/pid ignore on module load HID: make HID_DEBUG defaults consistent HID: autosuspend -- fix lockup of hid on reset HID: hid_reset_resume() needs to be defined only when CONFIG_PM is set HID: fix USB HID devices after STD with autosuspend HID: do not try to compile PM code with CONFIG_PM unset HID: autosuspend support for USB HID
| * Merge branch 'autosuspend' into for-nextJiri Kosina2009-03-305-114/+422
| |\ | | | | | | | | | | | | | | | Conflicts: drivers/hid/hid-core.c
| | * HID: autosuspend -- fix lockup of hid on resetOliver Neukum2009-03-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a use of flush_scheduled_work() in USB HID's reset logic that can deadlock. Tested-by: Valdis Kletniks <Valdis.Kletnieks@vt.edu> Signed-off-by: Oliver Neukum <oliver@neukum.name> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: hid_reset_resume() needs to be defined only when CONFIG_PM is setJiri Kosina2009-03-251-50/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no point of having hid_reset_resume() when CONFIG_PM is not set, and even the corresponding .reset_resume pointer in hid_driver struct is properly ifdefed. Move the definition into the ifdef CONFIG_PM part of the source to avoid drivers/hid/usbhid/hid-core.c:1337: warning: 'hid_reset_resume' defined but not used Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: fix USB HID devices after STD with autosuspendOliver Neukum2009-03-251-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a bug caused by reset_resume not changing the internal status flags for a device that is resumed via reset_resume. To do so the reset handlers, which correctly assume that a device is awake, can no longer do all the work of reset_resume handling. Signed-off-by: Oliver Neukum <oneukum@suse.de> Tested-by: Laurent Riffard <laurent.riffard@free.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: do not try to compile PM code with CONFIG_PM unsetJiri Kosina2009-03-251-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes this build breakage in case when CONFIG_PM is not set drivers/hid/usbhid/hid-core.c: In function 'hid_suspend': drivers/hid/usbhid/hid-core.c:1220: error: 'struct usb_device' has no member named 'auto_pm' drivers/hid/usbhid/hid-core.c:1245: error: 'struct usb_device' has no member named 'auto_pm' drivers/hid/usbhid/hid-core.c:1258: error: 'struct usb_device' has no member named 'auto_pm' by throwing both the hid_suspend() and hid_resume() away completely in such case, as they won't be used anyway. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: autosuspend support for USB HIDOliver Neukum2009-03-255-103/+396
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This uses the USB busy mechanism for aggessive autosuspend of USB HID devices. It autosuspends all opened devices supporting remote wakeup after a timeout unless - output is being done to the device - a key is being held down (remote wakeup isn't triggered upon key release) - LED(s) are lit - hiddev is opened As in the current driver closed devices will be autosuspended even if they don't support remote wakeup. The patch is quite large because output to devices is done in hard interrupt context meaning a lot a queuing and locking had to be touched. The LED stuff has been solved by means of a simple counter. Additions to the generic HID code could be avoided. In addition it now covers hidraw. It contains an embryonic version of an API to let the generic HID code tell the lower levels which capabilities with respect to power management are needed. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: remove compat stuffJiri Slaby2009-03-3028-172/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removal was scheduled and there is no problem with later distros to adapt for the new bus, thanks to aliases. module-init-tools map files are deprecated nowadays, so that the patch which introduced hid ones into the m-i-t won't be accepted and hence there is no reason for leaving compat stuff in. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: constify arrays of struct apple_key_translationPaul Collins2009-03-301-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | Mark arrays of struct apple_key_translation const so that they may be placed in .rodata, and adjust users to suit. Signed-off-by: Paul Collins <paul@ondioline.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: add support for Kye/Genius Ergo 525VJiri Kosina2009-03-306-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This device sends several buttons in a separate field, which is wrongly described in the report descriptor. Fix it in the following way: - change led usage page to button - report size 8 count 1 becomes report size 1 count 8 - the button usage range changed to 4-7 (the mouse has three buttons in a different field already). Reported-by: Tomas Hanak <tomas.hanak@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: Support Apple mini aluminum keyboardRyan Finnie2009-03-303-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New USB device ids and quirks for the "mini" Apple USB aluminum keyboards released Tuesday, model A1242. Note that while I own the ANSI (0x021d) version and cannot verify that the ISO (0x021e) and JIS (0x021f) versions exist, previous releases have followed the triple id convention for awhile now, and the device ids fit perfectly between USB_DEVICE_ID_APPLE_GEYSER4_* and USB_DEVICE_ID_APPLE_ALU_*. Signed-off-by: Ryan Finnie <ryan@finnie.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: support for Kensington slimblade deviceJiri Kosina2009-03-306-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | 0x47d/0x2041 device sends two extra buttons in 0xff00 usage page and therefore requires special handling. Reported-by: Jason Noble <nobleja@polezero.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: DragonRise game controller force feedback driverRichard Walmsley2009-03-306-0/+205
| | | | | | | | | | | | | | | | | | | | | | | | Adds force feedback support for USB DragonRise Inc. game controllers. These devices are mass produced in China and distributed under several vendors. Signed-off-by: Richard Walmsley <richwalm@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: add support for another version of 0e8f:0003 device in hid-plAnssi Hannula2009-03-301-12/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for another version of 0e8f:0003 device into hid-pl driver. This device has the values in separate fields and resembles devices handled by hid-zpff. Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com> Tested-by: Pantelis Koukousoulas <pktoss@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: fix race between usb_register_dev() and hiddev_open()Oliver Neukum2009-03-301-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | upon further thought this code is still racy. retval = usb_register_dev(usbhid->intf, &hiddev_class); here you open a window during which open can happen if (retval) { err_hid("Not able to get a minor for this device."); hid->hiddev = NULL; kfree(hiddev); return -1; } else { hid->minor = usbhid->intf->minor; hiddev_table[usbhid->intf->minor - HIDDEV_MINOR_BASE] = hiddev; and will fail because hiddev_table hasn't been updated The obvious fix of using a mutex to guard hiddev_table doesn't work because usb_open() and usb_register_dev() take minor_rwsem and we'd have an AB-BA deadlock. We need a lock usb_open() also takes in the right order and that leaves only one option, BKL. I don't like it but I see no alternative. Once the usb_open() implements something better than lock_kernel(), we could also do so. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: bring back possibility to specify vid/pid ignore on module loadJiri Kosina2009-03-301-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When hid quirks were converted to specialized driver, the HID_QUIRK_IGNORE has been moved completely, as the hid_ignore_list[] has been moved into the generic code. However userspace already got used to the possibility that modprobing usbhid with 'quirks=vid:pid:0x4' makes the device ignored by usbhid driver. So keep this quirk flag in place for backwards compatibility. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * | HID: make HID_DEBUG defaults consistentPavel Machek2009-03-301-3/+3
| | | | | | | | | | | | | | | | | | | | | Make defaults consistent with help text suggestions for HID_DEBUG. Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | | trivial: fix typos/grammar errors in Kconfig textsMatt LaPlante2009-03-301-1/+1
|/ / | | | | | | | | | | Signed-off-by: Matt LaPlante <kernel1@cyberdogtech.com> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6Linus Torvalds2009-03-261-4/+1
|\ \ | |/ |/| | | | | | | | | | | * 'bkl-removal' of git://git.lwn.net/linux-2.6: Rationalize fasync return values Move FASYNC bit handling to f_op->fasync() Use f_lock to protect f_flags Rename struct file->f_ep_lock
| * Rationalize fasync return valuesJonathan Corbet2009-03-161-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most fasync implementations do something like: return fasync_helper(...); But fasync_helper() will return a positive value at times - a feature used in at least one place. Thus, a number of other drivers do: err = fasync_helper(...); if (err < 0) return err; return 0; In the interests of consistency and more concise code, it makes sense to map positive return values onto zero where ->fasync() is called. Cc: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
* | Merge branch 'for-linus' of ↵Linus Torvalds2009-03-191-2/+2
|\ \ | |/ |/| | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: HID: fix waitqueue usage in hiddev HID: fix incorrect free in hiddev
| * HID: fix waitqueue usage in hiddevJohannes Weiner2009-03-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DECLARE_WAITQUEUE doesn't initialize the wait descriptor's task_list to 'empty' but to zero. prepare_to_wait() will not enqueue the descriptor to the waitqueue and finish_wait() will do list_del_init() on a list head that contains NULL pointers, which oopses. This was introduced by 079034073 "HID: hiddev cleanup -- handle all error conditions properly". The prior code used an unconditional add_to_waitqueue() which didn't care about the wait descriptor's list head and enqueued the thing unconditionally. The new code uses prepare_to_wait() which DOES check the prior list state, so use DEFINE_WAIT instead. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Cc: Oliver Neukum <oliver@neukum.name> Cc: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: fix incorrect free in hiddevJohannes Weiner2009-03-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If hiddev_open() fails, it wrongly frees the shared hiddev structure kept in hiddev_table instead of the hiddev_list structure allocated for the opened file descriptor. Existing references to this structure will then accessed free memory. This was introduced by 079034073 "HID: hiddev cleanup -- handle all error conditions properly". Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Cc: Oliver Neukum <oliver@neukum.name> Cc: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: move tmff and zpff devices from ignore_list to blacklistAnssi Hannula2009-02-171-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The devices handled by hid-tmff and hid-zpff were added in the hid_ignore_list[] instead of hid_blacklist[] in hid-core.c, thus disabling them completely. hid_ignore_list[] causes hid layer to skip the device, while hid_blacklist[] indicates there is a specific driver in hid bus. Re-enable the devices by moving them to the correct list. Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: unlock properly on error paths in hidraw_ioctl()Dan Carpenter2009-02-171-5/+9
| | | | | | | | | | | | | | We can't return immediately because lock_kernel() is held. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: blacklist Powercom USB UPSMichael Tokarev2009-02-172-0/+4
|/ | | | | | | | | | | | | | | | | | For quite some time users with various UPSes from Powercom were forced to play magic with bind/unbind in /sys in order to be able to see the UPSes. The beasts does not work as HID devices, even if claims to do so. cypress_m8 driver works with the devices instead, creating a normal serial port with which normal UPS controlling software works. The manufacturer confirmed the upcoming models with proper HID support will have different device IDs. In any way, it's wrong to have two completely different modules for one device in kernel. Blacklist the device in HID (add it to hid_ignore_list) to stop this mess, finally. Signed-off-By: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: document difference between hid_blacklist and hid_ignore_listJiri Kosina2009-01-291-0/+2
| | | | | | | Many people get it wrong and add device IDs into hid_blacklist instead of hid_ignore_list. Let's put a little comment in place. Signed-off-by: Jiri Kosina <jkosina@suse.cz>