Re: [PATCH] Input: evdev - Use EBADFD for flush() errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 19 Aug 2015 09:38:15 +0200,
Takashi Iwai wrote:
> 
> We've got bug reports showing the old systemd-logind (at least
> system-210) aborting unexpectedly, and this turned out to be because
> of an invalid error code from close() call to evdev devices.  close()
> is supposed to return only either EINTR or EBADFD, while the device
> returned ENODEV.  logind was overreacting to it and decided to kill
> itself when an unexpected error code was received.  What a tragedy.
> 
> The bad error code comes from flush fops, and actually evdev_flush()
> returns -ENODEV and else.  This patch papers over it, simply fixing
> the error return code to the acceptable values above.
> 
> Bugzilla: http://bugzilla.suse.com/show_bug.cgi?id=939834
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>

Hi,

any comments on this patch?


thanks,

Takashi


> ---
>  drivers/input/evdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index 9d35499faca4..28e9efd837e1 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -302,7 +302,7 @@ static int evdev_flush(struct file *file, fl_owner_t id)
>  		retval = input_flush_device(&evdev->handle, file);
>  
>  	mutex_unlock(&evdev->mutex);
> -	return retval;
> +	return retval < 0 ? -EBADFD : 0;
>  }
>  
>  static void evdev_free(struct device *dev)
> -- 
> 2.5.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux