[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