uinput: waiting for UI_FF_UPLOAD events will not inform user when allocation is required

From: John Salamon
Date: Tue Oct 10 2023 - 03:08:44 EST


Currently the "fake" input events generated by uinput in response to
effect uploads will return an effect with an id that has already been
handled by input_ff_upload in ff-core.c, which can modify the effect
id. This causes a problem specifically when the effect originally
uploaded via the EVIOCSFF ioctl contained an effect with -1, as the
userspace code handling UI_FF_UPLOAD receives an effect with an id
other than -1, and therefore will not know an allocation was
requested.

I notice that the "old" field on the ff_effect struct is set to NULL
when the -1 id is changed (in input_ff_upload), which can serve as a
flag that an allocation was requested. If it is the intention is that
uinput users check if old == NULL to know when allocations are needed
I think uinput documentation should describe this.

I first noticed this using python-evdev, see my issue report here:
https://github.com/gvalkov/python-evdev/issues/199