28 Feb, 2018

1 commit


17 Feb, 2018

1 commit

  • commit edfc3722cfef4217c7fe92b272cbe0288ba1ff57 upstream.

    The Toshiba Click Mini uses an i2c attached keyboard/touchpad combo
    (single i2c_hid device for both) which has a vid:pid of 04F3:0401,
    which is also used by a bunch of Elan touchpads which are handled by the
    drivers/input/mouse/elan_i2c driver, but that driver deals with pure
    touchpads and does not work for a combo device such as the one on the
    Toshiba Click Mini.

    The combo on the Mini has an ACPI id of ELAN0800, which is not claimed
    by the elan_i2c driver, so check for that and if it is found do not ignore
    the device. This fixes the keyboard/touchpad combo on the Mini not working
    (although with the touchpad in mouse emulation mode).

    Signed-off-by: Hans de Goede
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

04 Feb, 2018

1 commit

  • commit 791ae273731fa85d3332e45064dab177ae663e80 upstream.

    Background: ExpressKey Remotes communicate their events via usb dongle.
    Each dongle can hold up to 5 pairings at one time and one EKR (identified
    by its serial number) can unfortunately be paired with its dongle
    more than once. The pairing takes place in a round-robin fashion.

    Input devices are only created once per EKR, when a new serial number
    is seen in the list of pairings. However, if a device is created for
    a "higher" paring index and subsequently a second pairing occurs at a
    lower pairing index, unpairing the remote with that serial number from
    any pairing index will currently cause a driver crash. This occurs
    infrequently, as two remotes are necessary to trigger this bug and most
    users have only one remote.

    As an illustration, to trigger the bug you need to have two remotes,
    and pair them in this order:

    1. slot 0 -> remote 1 (input device created for remote 1)
    2. slot 1 -> remote 1 (duplicate pairing - no device created)
    3. slot 2 -> remote 1 (duplicate pairing - no device created)
    4. slot 3 -> remote 1 (duplicate pairing - no device created)
    5. slot 4 -> remote 2 (input device created for remote 2)

    6. slot 0 -> remote 2 (1 destroyed and recreated at slot 1)
    7. slot 1 -> remote 2 (1 destroyed and recreated at slot 2)
    8. slot 2 -> remote 2 (1 destroyed and recreated at slot 3)
    9. slot 3 -> remote 2 (1 destroyed and not recreated)
    10. slot 4 -> remote 2 (2 was already in this slot so no changes)

    11. slot 0 -> remote 1 (The current code sees remote 2 was paired over in
    one of the dongle slots it occupied and attempts
    to remove all information about remote 2 [1]. It
    calls wacom_remote_destroy_one for remote 2, but
    the destroy function assumes the lowest index is
    where the remote's input device was created. The
    code "cleans up" the other remote 2 pairings
    including the one which the input device was based
    on, assuming they were were just duplicate
    pairings. However, the cleanup doesn't call the
    devres release function for the input device that
    was created in slot 4).

    This issue is fixed by this commit.

    [1] Remote 2 should subsequently be re-created on the next packet from the
    EKR at the lowest numbered slot that it occupies (here slot 1).

    Fixes: f9036bd43602 ("HID: wacom: EKR: use devres groups to manage resources")
    Signed-off-by: Aaron Armstrong Skomra
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Aaron Armstrong Skomra
     

25 Dec, 2017

3 commits

  • [ Upstream commit 9257821c5a1dc57ef3a37f7cbcebaf548395c964 ]

    There is a new clone of the XIN MO arcade controller which has same issue with
    out of range like the original. This fix will solve the issue where 2
    directions on the joystick are not recognized by the new THT 2P arcade
    controller with device ID 0x75e1. In details the new device ID is added the
    hid-id list and the hid-xinmo source code.

    Signed-off-by: Peter Stein
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Peter Stein
     
  • [ Upstream commit 01adc47e885f1127b29d76d0dfb21d8262f9d6b4 ]

    This mouse sold by Corsair as Scimitar PRO RGB defines two consecutive
    Logical Minimum items in its Application (Consumer.0001) report making
    it non parseable. This patch fixes the report descriptor overriding
    byte 77 in rdesc from 0x16 (Logical Minimum with 16 bits value) to 0x26
    (Logical Maximum with 16 bits value).

    Signed-off-by: Oscar Campos
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Oscar Campos
     
  • [ Upstream commit deaba636997557fce46ca7bcb509bff5ea1b0558 ]

    Add quirks for several corsair gaming devices to avoid long delays on
    report initialization

    Supported devices:

    - Corsair K65RGB Rapidfire Gaming Keyboard
    - Corsair K70RGB Rapidfire Gaming Keyboard
    - Corsair Scimitar Pro RGB Gaming Mouse

    Signed-off-by: Oscar Campos
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Oscar Campos
     

20 Dec, 2017

1 commit

  • [ Upstream commit 7da85fbf1c87d4f73621e0e7666a3387497075a9 ]

    When everything goes smoothly, ret is set to 0 which makes the function
    to return EIO error.

    Fixes: 8e9faa15469e ("HID: cp2112: fix gpio-callback error handling")
    Signed-off-by: Sébastien Szymanski
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Sébastien Szymanski
     

14 Dec, 2017

1 commit

  • [ Upstream commit f2f10b7e722a75c6d75a7f7cd06b0eee3ae20f7c ]

    Add support for media keys on the keyboard that comes with the
    Asus V221ID and ZN241IC All In One computers.

    The keys to support here are WLAN, BRIGHTNESSDOWN and BRIGHTNESSUP.

    This device is not visibly branded as Chicony, and the USB Vendor ID
    suggests that it is a JESS device. However this seems like the right place
    to put it: the usage codes are identical to the currently supported
    devices, and this driver already supports the ASUS AIO keyboard AK1D.

    Signed-off-by: Daniel Drake
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Daniel Drake
     

18 Oct, 2017

1 commit

  • commit f043bfc98c193c284e2cd768fefabe18ac2fed9b upstream.

    The hid descriptor identifies the length and type of subordinate
    descriptors for a device. If the received hid descriptor is smaller than
    the size of the struct hid_descriptor, it is possible to cause
    out-of-bounds.

    In addition, if bNumDescriptors of the hid descriptor have an incorrect
    value, this can also cause out-of-bounds while approaching hdesc->desc[n].

    So check the size of hid descriptor and bNumDescriptors.

    BUG: KASAN: slab-out-of-bounds in usbhid_parse+0x9b1/0xa20
    Read of size 1 at addr ffff88006c5f8edf by task kworker/1:2/1261

    CPU: 1 PID: 1261 Comm: kworker/1:2 Not tainted
    4.14.0-rc1-42251-gebb2c2437d80 #169
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
    __dump_stack lib/dump_stack.c:16
    dump_stack+0x292/0x395 lib/dump_stack.c:52
    print_address_description+0x78/0x280 mm/kasan/report.c:252
    kasan_report_error mm/kasan/report.c:351
    kasan_report+0x22f/0x340 mm/kasan/report.c:409
    __asan_report_load1_noabort+0x19/0x20 mm/kasan/report.c:427
    usbhid_parse+0x9b1/0xa20 drivers/hid/usbhid/hid-core.c:1004
    hid_add_device+0x16b/0xb30 drivers/hid/hid-core.c:2944
    usbhid_probe+0xc28/0x1100 drivers/hid/usbhid/hid-core.c:1369
    usb_probe_interface+0x35d/0x8e0 drivers/usb/core/driver.c:361
    really_probe drivers/base/dd.c:413
    driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
    __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
    bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
    __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
    device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
    bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
    device_add+0xd0b/0x1660 drivers/base/core.c:1835
    usb_set_configuration+0x104e/0x1870 drivers/usb/core/message.c:1932
    generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
    usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
    really_probe drivers/base/dd.c:413
    driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
    __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
    bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
    __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
    device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
    bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
    device_add+0xd0b/0x1660 drivers/base/core.c:1835
    usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
    hub_port_connect drivers/usb/core/hub.c:4903
    hub_port_connect_change drivers/usb/core/hub.c:5009
    port_event drivers/usb/core/hub.c:5115
    hub_event+0x194d/0x3740 drivers/usb/core/hub.c:5195
    process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
    worker_thread+0x221/0x1850 kernel/workqueue.c:2253
    kthread+0x3a1/0x470 kernel/kthread.c:231
    ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431

    Reported-by: Andrey Konovalov
    Signed-off-by: Jaejoong Kim
    Tested-by: Andrey Konovalov
    Acked-by: Alan Stern
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Jaejoong Kim
     

12 Oct, 2017

4 commits

  • commit ce06760ba46b66dae50f2519ae76bd15e89b5710 upstream.

    Cintiq 12 has 10 expresskey buttons. The bit shift for the last
    two buttons were off by 5.

    Fixes: c7f0522 ("HID: wacom: Slim down wacom_intuos_pad processing")

    Signed-off-by: Ping Cheng
    Tested-by: Matthieu Robin
    Signed-off-by: Jiri Kosina
    Cc: Jason Gerecke
    Signed-off-by: Greg Kroah-Hartman

    Ping Cheng
     
  • commit 2a5e597c6bb1b873e473e5f57147e9e5d2755430 upstream.

    The wacom_get_hdev_data function is used to find and return a reference to
    the "other half" of a Wacom device (i.e., the touch device associated with
    a pen, or vice-versa). To ensure these references are properly accounted
    for, the function is supposed to automatically increment the refcount before
    returning. This was not done, however, for devices which have pen & touch
    on different interfaces of the same USB device. This can lead to a WARNING
    ("refcount_t: underflow; use-after-free") when removing the module or device
    as we call kref_put() more times than kref_get(). Triggering an "actual" use-
    after-free would be difficult since both devices will disappear nearly-
    simultaneously. To silence this warning and prevent the potential error, we
    need to increment the refcount for all cases within wacom_get_hdev_data.

    Fixes: 41372d5d40 ("HID: wacom: Augment 'oVid' and 'oPid' with heuristics for HID_GENERIC")
    Signed-off-by: Jason Gerecke
    Reviewed-by: Ping Cheng
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Jason Gerecke
     
  • commit 74aebed6dc13425233f2224668353cff7a112776 upstream.

    Commit a50aac7193f1 introduces 'led.groups' and adds EKR support
    for these groups. However, unlike the other devices with LEDs,
    the EKR's LEDs are read-only and we shouldn't attempt to control
    them in wacom_led_control().

    See bug: https://sourceforge.net/p/linuxwacom/bugs/342/

    Fixes: a50aac7193f1 ("HID: wacom: leds: dynamically allocate LED groups")
    Signed-off-by: Aaron Armstrong Skomra
    Reviewed-by: Jason Gerecke
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Aaron Armstrong Skomra
     
  • commit 8320caeeffdefec3b58b9d4a7ed8e1079492fe7b upstream.

    The buffer allocation is not currently accounting for an extra byte for
    the report id. This can cause an out of bounds access in function
    i2c_hid_set_or_send_report() with reportID > 15.

    Signed-off-by: Adrian Salido
    Reviewed-by: Benson Leung
    Signed-off-by: Guenter Roeck
    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Adrian Salido
     

08 Oct, 2017

1 commit

  • [ Upstream commit 5b779fc52020ac6f5beea31c5eafc3d25cf70dc1 ]

    In the general case, the resources are properly released by devm without
    needing to do anything. However, when unplugging the wireless receiver,
    the kernel segfaults from time to time while calling devres_release_all().

    I think in that case the resources attempt to access hid_get_drvdata(hdev)
    which has been set to null while leaving wacom_remove().

    Signed-off-by: Benjamin Tissoires
    Acked-by: Jason Gerecke
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Tissoires
     

07 Aug, 2017

1 commit

  • [ Upstream commit 08f9572671c8047e7234cbf150869aa3c3d59a97 ]

    This headlamp contains a dummy HID descriptor which pretends to be
    a mouse-like device, but can't be used as a mouse at all.

    Reported-by: Lukas Ocilka
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Jiri Kosina
     

05 Jul, 2017

1 commit

  • [ Upstream commit a89af4abdf9b353cdd6f61afc0eaaac403304873 ]

    Support for the Asus Touchpad was recently added. It turns out this
    device can fail initialisation (and become unusable) when the RESET
    command is sent too soon after the POWER ON command.

    Unfortunately the i2c-hid specification does not specify the need for
    a delay between these two commands. But it was discovered the Windows
    driver has a 1ms delay.

    As a result, this patch modifies the i2c-hid module to add a sleep
    inbetween the POWER ON and RESET commands which lasts between 1ms and 5ms.

    See https://github.com/vlasenko/hid-asus-dkms/issues/24 for further
    details.

    Signed-off-by: Brendan McGrath
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Brendan McGrath
     

29 Jun, 2017

1 commit


07 Jun, 2017

1 commit

  • commit 2ac97f0f6654da14312d125005c77a6010e0ea38 upstream.

    The following Smatch complaint was generated in response to commit
    2a6cdbd ("HID: wacom: Introduce new 'touch_input' device"):

    drivers/hid/wacom_wac.c:1586 wacom_tpc_irq()
    error: we previously assumed 'wacom->touch_input' could be null (see line 1577)

    The 'touch_input' and 'pen_input' variables point to the 'struct input_dev'
    used for relaying touch and pen events to userspace, respectively. If a
    device does not have a touch interface or pen interface, the associated
    input variable is NULL. The 'wacom_tpc_irq()' function is responsible for
    forwarding input reports to a more-specific IRQ handler function. An
    unknown report could theoretically be mistaken as e.g. a touch report
    on a device which does not have a touch interface. This can be prevented
    by only calling the pen/touch functions are called when the pen/touch
    pointers are valid.

    Fixes: 2a6cdbd ("HID: wacom: Introduce new 'touch_input' device")
    Signed-off-by: Jason Gerecke
    Reviewed-by: Ping Cheng
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Jason Gerecke
     

12 Apr, 2017

9 commits

  • [ Upstream commit e7deb1570a527d3c74be4e21a72b1b459605c501 ]

    Non-generic devices have numbered_buttons set for both pen and
    touch interfaces by default. The actual number of buttons on the
    interface is normally manually decided later, which is different
    from what those HID generic devices are processed, where number
    of buttons are directly retrieved from HID descriptors.

    This patch adds the missed HID_GENERIC check and moves the statement
    to wacom_setup_pad_input_capabilities since it's not a quirk anymore.

    Signed-off-by: Ping Cheng
    Reviewed-by: Jason Gerecke
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ping Cheng
     
  • [ Upstream commit 8aa2cc7e747881d1fd52db28261b201d4e3e5565 ]

    The DolphinBar by Mayflash (identified as Dragonrise) needs
    HID_QUIRK_MULTI_INPUT to split it up into four input devices. Without this
    quirk the adapter is falsely recognized as a tablet. See also bug 115841
    (https://bugzilla.kernel.org/show_bug.cgi?id=115841).

    Signed-off-by: Marcel Hasler
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Marcel Hasler
     
  • [ Upstream commit f83f90cf7ba68deb09406ea9da80852a64c4db29 ]

    The Futaba TOSD-5711BB VFD crashes when the initial HID report is requested,
    register the display in hid-ids and tell hid-quirks to not do the init.

    Signed-off-by: Alex Wood
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Alex Wood
     
  • [ Upstream commit b897f6db3ae2cd9a42377f8b1865450f34ceff0e ]

    We already have in place a quirk for Windows 8 devices, but it looks
    like the Surface Cover are not conforming to it.
    Given that we are only interested in 3 feature reports (the ones that
    the Windows driver retrieves), we should be safe to unconditionally apply
    the quirk to everybody.

    In case there is an issue with a controller, we can always mark it as such
    in the transport driver, and hid-multitouch won't try to retrieve the
    feature report.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Tissoires
     
  • [ Upstream commit 8fe89ef076fa104f514da6ef61d90f5bf93488e3 ]

    There is no reasons to filter out keyboard and consumer control collections
    in hid-multitouch.
    With the previous hid-input fix, there is now a full support of the Type
    Cover and we can remove all specific bits from hid-core and hid-microsoft.

    hid-multitouch will automatically set HID_QUIRK_NO_INIT_REPORTS so we can
    also remove it from the list of ushbid quirks.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Tissoires
     
  • [ Upstream commit 5cc5084dd9afa2f9bf953b0217bdb1b7c2158be1 ]

    One more device requiring a quirk :/

    Reported-by: Christian-Nils Boda
    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Tissoires
     
  • [ Upstream commit da809197a919942ab6ee0d008c20a011872181b1 ]

    One more device requiring a quirk :/

    [jkosina@suse.cz: update comment based on Bastien's remark]
    Signed-off-by: Benjamin Tissoires
    Tested-by: Bastien Nocera
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Tissoires
     
  • [ Upstream commit 71af01a8c85ad89449209594133bdfdfaa9f1e2a ]

    Certain devices produced by Weida Tech need to have a wakeup command sent to
    them before powering on. The call itself will come back with error, but the
    device can be powered on afterwards.

    [jkosina@suse.cz: rewrite changelog]
    [jkosina@suse.cz: remove unused device ID addition]
    Signed-off-by: HungNien Chen
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    HungNien Chen
     
  • [ Upstream commit b2554000f5b5d2a3a368d09c6debf7da64901fcf ]

    All known gamepad adapters by Mayflash (identified as Dragonrise) need
    HID_QUIRK_MULTI_INPUT to split them up into four input devices. Without this
    quirk those adapters are falsely recognized as tablets. Fixes bug 115841
    (https://bugzilla.kernel.org/show_bug.cgi?id=115841).

    Signed-off-by: Marcel Hasler
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Marcel Hasler
     

08 Apr, 2017

1 commit

  • commit 8b4073596997f2ccbf68d8e72e07b827388a4536 upstream.

    A previous commit (below) adds a check for already probed interfaces to
    Wacom's matching heuristic. Unfortunately this causes the Bamboo Pen
    (CTL-460) to match itself to its 'ghost' touch interface. After
    subsequent changes to the driver this match to the ghost causes the
    kernel to crash. This patch avoids calling wacom_add_shared_data()
    for the BAMBOO_PEN's ghost touch interface.

    Fixes: 41372d5d40e7 ("HID: wacom: Augment 'oVid' and 'oPid' with heuristics for HID_GENERIC")
    Signed-off-by: Aaron Armstrong Skomra
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Aaron Armstrong Skomra
     

09 Feb, 2017

5 commits

  • commit 282e4637bc1c0b338708bcebd09d31c69abec070 upstream.

    Commit 025bcc1 performed cleanup work on the 'wacom_pl_irq' function, making
    it follow the standards used in the rest of the codebase. The change
    unintiontionally allowed the function to send input events from reports
    that are not marked as being in prox. This can cause problems as the
    report values for X, Y, etc. are not guaranteed to be correct. In
    particular, occasionally the tablet will send a report with these values
    set to zero. If such a report is received it can caus an unexpected jump
    in the XY position.

    This patch surrounds more of the processing code with a proximity check,
    preventing these zeroed reports from overwriting the current state. To
    be safe, only the tool type and ABS_MISC events should be reported when
    the pen is marked as being out of prox.

    Fixes: 025bcc1540 ("HID: wacom: Simplify 'wacom_pl_irq'")
    Signed-off-by: Jason Gerecke
    Reviewed-by: Ping Cheng
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Jason Gerecke
     
  • commit 877a021e08ccb6434718c0cc781fdf943c884cc0 upstream.

    With NOGET quirk Logitech F510 is now fully workable in dinput mode including
    rumble effects (according to fftest).

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=117091

    [jkosina@suse.cz: fix patch format]
    Signed-off-by: Ardinartsev Nikita
    Acked-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Ardinartsev Nikita
     
  • commit ed9ab4287f96e66340e0390e2c583f2f9110cba0 upstream.

    Quirking the following AMI USB device with ALWAYS_POLL fixes an AMI
    virtual keyboard and mouse from not responding and timing out when
    it is attached to a ppc64el Power 8 system and when we have some
    rapid open/closes on the mouse device.

    usb 1-3: new high-speed USB device number 2 using xhci_hcd
    usb 1-3: New USB device found, idVendor=046b, idProduct=ff01
    usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-3: Product: Virtual Hub
    usb 1-3: Manufacturer: American Megatrends Inc.
    usb 1-3: SerialNumber: serial
    usb 1-3.3: new high-speed USB device number 3 using xhci_hcd
    usb 1-3.3: New USB device found, idVendor=046b, idProduct=ff31
    usb 1-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-3.3: Product: Virtual HardDisk Device
    usb 1-3.3: Manufacturer: American Megatrends Inc.
    usb 1-3.4: new low-speed USB device number 4 using xhci_hcd
    usb 1-3.4: New USB device found, idVendor=046b, idProduct=ff10
    usb 1-3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    usb 1-3.4: Product: Virtual Keyboard and Mouse
    usb 1-3.4: Manufacturer: American Megatrends Inc.

    With the quirk I have not been able to trigger the issue with
    half an hour of saturation soak testing.

    Signed-off-by: Colin Ian King
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Colin Ian King
     
  • commit 8e9faa15469ed7c7467423db4c62aeed3ff4cae3 upstream.

    In case of a zero-length report, the gpio direction_input callback would
    currently return success instead of an errno.

    Fixes: 1ffb3c40ffb5 ("HID: cp2112: make transfer buffers DMA capable")
    Signed-off-by: Johan Hovold
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • commit 7a7b5df84b6b4e5d599c7289526eed96541a0654 upstream.

    A recent commit fixing DMA-buffers on stack added a shared transfer
    buffer protected by a spinlock. This is broken as the USB HID request
    callbacks can sleep. Fix this up by replacing the spinlock with a mutex.

    Fixes: 1ffb3c40ffb5 ("HID: cp2112: make transfer buffers DMA capable")
    Signed-off-by: Johan Hovold
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

26 Jan, 2017

2 commits

  • commit 7a546af50eb78ab99840903083231eb635c8a566 upstream.

    Make sure to check for short control transfers in order to avoid parsing
    uninitialised buffer data and leaking it to user space.

    Note that the backlight and macro-mode buffer constraints are kept as
    loose as possible in order to avoid any regressions should the current
    buffer sizes be larger than necessary.

    Fixes: 6f78193ee9ea ("HID: corsair: Add Corsair Vengeance K90 driver")
    Signed-off-by: Johan Hovold
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • commit 6d104af38b570d37aa32a5803b04c354f8ed513d upstream.

    Not all platforms support DMA to the stack, and specifically since v4.9
    this is no longer supported on x86 with VMAP_STACK either.

    Note that the macro-mode buffer was larger than necessary.

    Fixes: 6f78193ee9ea ("HID: corsair: Add Corsair Vengeance K90 driver")
    Signed-off-by: Johan Hovold
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

15 Jan, 2017

1 commit


12 Jan, 2017

1 commit

  • commit 143fca77cce906d35f7a60ccef648e888df589f2 upstream.

    While applying patch d443a0aa3a29: "HID: hid-sensor-hub: clear memory to
    avoid random data", there was some issues in applying correct version of
    the patch. This resulted in the breakage of sensor functions as all
    request like power-up will be reset by the memset() in the function
    sensor_hub_set_feature().
    The reset of caller buffer should be in the function
    sensor_hub_get_feature(), not in the sensor_hub_set_feature().

    Fixes: d443a0aa3a29 ("HID: hid-sensor-hub: clear memory to avoid random data")
    Signed-off-by: Srinivas Pandruvada
    Signed-off-by: Jiri Kosina
    Signed-off-by: Greg Kroah-Hartman

    Srinivas Pandruvada
     

24 Nov, 2016

3 commits

  • When user tried to read some fields like hysteresis from IIO sysfs on some
    systems, it fails. The reason is that this field is a byte field and caller
    of sensor_hub_get_feature() passes a buffer of 4 bytes. Here the function
    sensor_hub_get_feature() copies the single byte from the report to the
    caller buffer and returns "1" as the number of bytes copied. So caller
    can use the return value.

    But this is done by multiple callers, so if we just change the
    sensor_hub_get_feature so that caller buffer is initialized with 0s
    then we don't to change all functions.

    Signed-off-by: Song Hongyan
    Acked-by: Jonathan Cameron
    Signed-off-by: Jiri Kosina

    Song Hongyan
     
  • Kernel v4.9 strictly enforces DMA capable buffers, so we need to remove
    buffers allocated on the stack.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     
  • Kernel v4.9 strictly enforces DMA capable buffers, so we need to remove
    buffers allocated on the stack.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires