Move FD_CLR above pInfo->read_input
The event fd may be invalidated by the pInfo->read_input call. If it is invalidated, the subsequent FD_CLR call will segfault. Thus, the FD_CLR call must precede the pInfo->read_input call. Signed-off-by: Chase Douglas <chasedouglas@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
982f6648fd
commit
b5aa2e0a5f
|
@ -263,13 +263,14 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
|
||||||
(FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) {
|
(FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) {
|
||||||
int sigstate = xf86BlockSIGIO();
|
int sigstate = xf86BlockSIGIO();
|
||||||
|
|
||||||
pInfo->read_input(pInfo);
|
|
||||||
xf86UnblockSIGIO(sigstate);
|
|
||||||
/*
|
/*
|
||||||
* Remove the descriptior from the set because more than one
|
* Remove the descriptior from the set because more than one
|
||||||
* device may share the same file descriptor.
|
* device may share the same file descriptor.
|
||||||
*/
|
*/
|
||||||
FD_CLR(pInfo->fd, &devicesWithInput);
|
FD_CLR(pInfo->fd, &devicesWithInput);
|
||||||
|
|
||||||
|
pInfo->read_input(pInfo);
|
||||||
|
xf86UnblockSIGIO(sigstate);
|
||||||
}
|
}
|
||||||
pInfo = pInfo->next;
|
pInfo = pInfo->next;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user