udevd: fix crash when workers time out after exit is signal caught
authorMartin Wilck <mwilck@suse.com>
Tue, 12 Nov 2019 15:43:42 +0000 (16:43 +0100)
committerMartin Wilck <mwilck@suse.com>
Tue, 12 Nov 2019 15:43:42 +0000 (16:43 +0100)
commit7b6596d7489421842af854ed16333ea747879732
tree91b5099e3125d9dadf212385f16eb5a69aa96a1a
parentbfde9421af1458e18999d787b1ab46a6a33e8bb6
udevd: fix crash when workers time out after exit is signal caught

If udevd receives an exit signal, it releases its reference on the udev
monitor in manager_exit(). If at this time a worker is hanging, and if
the event timeout for this worker expires before udevd exits, udevd
crashes in on_sigchld()->udev_monitor_send_device(), because the monitor
has already been freed.

Fix this by releasing the main process's monitor ref later, in
manager_free().
src/udev/udevd.c