[igt-dev] [PATCH i-g-t] testdisplay: Don't double-close udev fd
Kahola, Mika
mika.kahola at intel.com
Tue Sep 24 06:15:41 UTC 2019
On Mon, 2019-09-23 at 16:06 +0300, Petri Latvala wrote:
> testdisplay uses GIO for polling the udev fd for events. When
> shutting
> down, both the GIO channel and libudev want to close their respective
> fds, leading to a double close.
>
> Since version 240 (as used by Ubuntu 19.04), libudev has complained
> loudly if close() fails with EBADF. Previously the error has flown
> under the radar.
>
> Calling g_io_channel_shutdown() will call close() on the fd
> regardless
> of g_io_channel_set_close_on_unref, so opencode the flush and unref
> instead to avoid double closing.
>
Reviewed-by: Mika Kahola <mika.kahola at intel.com>
> Signed-off-by: Petri Latvala <petri.latvala at intel.com>
> Cc: Jani Saarinen <jani.saarinen at intel.com>
> Cc: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
> ---
> tests/testdisplay_hotplug.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tests/testdisplay_hotplug.c
> b/tests/testdisplay_hotplug.c
> index 581d987e..cd784895 100644
> --- a/tests/testdisplay_hotplug.c
> +++ b/tests/testdisplay_hotplug.c
> @@ -117,8 +117,10 @@ out:
>
> void testdisplay_cleanup_hotplug(void)
> {
> - if (udevchannel)
> - g_io_channel_shutdown(udevchannel, TRUE, NULL);
> + if (udevchannel) {
> + g_io_channel_flush(udevchannel, NULL);
> + g_io_channel_unref(udevchannel);
> + }
> if (uevent_monitor)
> udev_monitor_unref(uevent_monitor);
> if (udev)
More information about the igt-dev
mailing list