Skip to content
  • Kirill Smelkov's avatar
    *: convert stream-like files -> stream_open, even if they use noop_llseek · 3975b097
    Kirill Smelkov authored
    This patch continues 10dce8af (fs: stream_open - opener for
    stream-like files so that read and write can run simultaneously without
    deadlock) and c5bf68fe (*: convert stream-like files from
    nonseekable_open -> stream_open) and teaches steam_open.cocci to
    consider files as being stream-like not only if they have
    .llseek=no_llseek, but also if they have .llseek=noop_llseek.
    
    This is safe to do: the comment about noop_llseek says
    
    	This is an implementation of ->llseek useable for the rare special case when
    	userspace expects the seek to succeed but the (device) file is actually not
    	able to perform the seek. In this case you use noop_llseek() instead of
    	falling back to the default implementation of ->llseek.
    
    and in general noop_llseek was massively added to drivers in 6038f373
    
    
    (llseek: automatically add .llseek fop) when changing default for NULL .llseek
    from NOP to no_llseek with the idea to avoid breaking compatibility, if
    maybe some user-space program was using lseek on a device without caring
    about the result, but caring if it was an error or not.
    
    Amended semantic patch produces two changes when applied tree-wide:
    
            drivers/hid/hid-sensor-custom.c:690:8-24: WARNING: hid_sensor_custom_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
            drivers/input/mousedev.c:564:1-17: ERROR: mousedev_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    
    Cc: Julia Lawall <Julia.Lawall@lip6.fr>
    Cc: Jan Blunck <jblunck@suse.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Jonathan Cameron <jic23@kernel.org>
    Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: default avatarKirill Smelkov <kirr@nexedi.com>
    3975b097