mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:04:51 +01:00
HID: pidff: Fix condition effect bit clearing
As reported by MPDarkGuy on discord, NULL pointer dereferences were
happening because not all the conditional effects bits were cleared.
Properly clear all conditional effect bits from ffbit
Fixes: 7f3d7bc0df ("HID: pidff: Better quirk assigment when searching for fields")
Cc: stable@vger.kernel.org # 6.18.x
Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
ecfa6f3449
commit
97d5c8f5c0
1 changed files with 7 additions and 4 deletions
|
|
@ -1452,10 +1452,13 @@ static int pidff_init_fields(struct pidff_device *pidff, struct input_dev *dev)
|
|||
hid_warn(pidff->hid, "unknown ramp effect layout\n");
|
||||
|
||||
if (PIDFF_FIND_FIELDS(set_condition, PID_SET_CONDITION, 1)) {
|
||||
if (test_and_clear_bit(FF_SPRING, dev->ffbit) ||
|
||||
test_and_clear_bit(FF_DAMPER, dev->ffbit) ||
|
||||
test_and_clear_bit(FF_FRICTION, dev->ffbit) ||
|
||||
test_and_clear_bit(FF_INERTIA, dev->ffbit))
|
||||
bool test = false;
|
||||
|
||||
test |= test_and_clear_bit(FF_SPRING, dev->ffbit);
|
||||
test |= test_and_clear_bit(FF_DAMPER, dev->ffbit);
|
||||
test |= test_and_clear_bit(FF_FRICTION, dev->ffbit);
|
||||
test |= test_and_clear_bit(FF_INERTIA, dev->ffbit);
|
||||
if (test)
|
||||
hid_warn(pidff->hid, "unknown condition effect layout\n");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue