vmmouse driver corrupts upper 32 bits of registers on x86-64

the vmmouse driver corrupts the x86-64 register state because it only saves the low 32 bits, and when restoring registers the upper bits will be zero.

See kernel commit 2687c848e578 ("x86/vmware: Fix hypercall clobbers") that works around this bug for the cases we've seen.

The bug is in vmmouse_{get,set}_data() and the caller vmmouse_ioport_read() that uses a "uint32_t data[6]" array for register state.

See

https://lore.kernel.org/all/99a9c69a-fc1a-43b7-8d1e-c42d6493b41f@broadcom.com/

for analysis by Alexey Makhalov.

Assignee Loading
Time tracking Loading