• Jason Gerecke's avatar
    HID: wacom: Fix sibling detection regression · a9ce7856
    Jason Gerecke authored
    Commit 345857bb ("HID: wacom: generic: Add support for sensor offsets") included
    a change to the operation and location of the call to 'wacom_add_shared_data'
    in 'wacom_parse_and_register'. The modifications included moving it higher up
    so that it would occur before the call to 'wacom_retrieve_hid_descriptor'. This
    was done to prevent a crash that would have occured when the report containing
    tablet offsets was fed into the driver with 'wacom_hid_report_raw_event'
    (specifically: the various 'wacom_wac_*_report' functions were written with the
    assumption that they would only be called once tablet setup had completed;
    'wacom_wac_pen_report' in particular dereferences 'shared' which wasn't yet
    allocated).
    
    Moving the call to 'wacom_add_shared_data' effectively prevented the crash but
    also broke the sibiling detection code which assumes that the HID descriptor
    has been read and the various device_type flags set.
    
    To fix this situation, we restore the original 'wacom_add_shared_data'
    operation and location and instead implement an alternative change that can
    also prevent the crash. Specifically, we notice that the report functions
    mentioned above expect to be called only for input reports.  By adding a check,
    we can prevent feature reports (such as the offset report) from
    causing trouble.
    
    Fixes: 345857bb ("HID: wacom: generic: Add support for sensor offsets")
    Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
    Tested-by: default avatarPing Cheng <pingc@wacom.com>
    Reviewed-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    a9ce7856
wacom_sys.c 63.9 KB