Bug 2536538 (CVE-2026-90197)

Summary: CVE-2026-90197 kernel: HID: haptic: don't write an uninitialized value to unhandled usages
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: akhatavk, aos-team-art-private, asdas, dpaolell, jdelft, jupierce, lgarciaa, mbiarnes, ppalepu, ppostler, prdhamdh, rhel-process-autobot, sghai, sidsharm, suppawar, vlaad, watson-tool-maintainers
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in the Linux kernel's Human Interface Device (HID) haptic subsystem. A local attacker could exploit a vulnerability in the `fill_effect_buf()` function, which incorrectly writes uninitialized or leftover memory values to the `field->value[]` array for unhandled haptic usages. This uninitialized data is subsequently serialized into the effect's report buffer by `hid_output_report()`. This vulnerability could lead to information disclosure, potentially exposing sensitive kernel memory contents.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-09-17 18:20:20 UTC
In the Linux kernel, the following vulnerability has been resolved:

HID: haptic: don't write an uninitialized value to unhandled usages

fill_effect_buf() initializes value only for the four haptic usages
handled by its switch, but writes it to field->value[] for every usage.
An unhandled usage can therefore receive either an uninitialized value
or one left over from the previous usage. hid_output_report() then
serializes that value into the effect's report buffer.

Skip unhandled usages instead. This also matches switch_mode(), which
only updates fields it recognizes.

Found with Clang's -Wconditional-uninitialized.