Commit fcd98147 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'stream_open-5.3' of https://lab.nexedi.com/kirr/linux

Pull stream_open() updates from Kirill Smelkov:
 "This time on stream_open front it is only two small changes:

   - the first one converts stream_open.cocci to treat all functions
     that start with wait_.* as blocking. Previously it was only
     wait_event_.* functions that were considered as blocking, but this
     was falsely reporting several deadlock cases as only warning.

     This was picked by linux-kbuild and entered mainline as commit
     0c4ab18f ("coccinelle: api/stream_open: treat all wait_.*()
     calls as blocking"), and already merged earlier.

   - the second one teaches stream_open.cocci to consider files as being
     stream-like even if they use noop_llseek. It results in two more
     drivers being converted to stream_open() (mousedev.c and
     hid-sensor-custom.c)"

* tag 'stream_open-5.3' of https://lab.nexedi.com/kirr/linux:
  *: convert stream-like files -> stream_open, even if they use noop_llseek
parents 55167453 3975b097
...@@ -687,7 +687,7 @@ static int hid_sensor_custom_open(struct inode *inode, struct file *file) ...@@ -687,7 +687,7 @@ static int hid_sensor_custom_open(struct inode *inode, struct file *file)
if (test_and_set_bit(0, &sensor_inst->misc_opened)) if (test_and_set_bit(0, &sensor_inst->misc_opened))
return -EBUSY; return -EBUSY;
return nonseekable_open(inode, file); return stream_open(inode, file);
} }
static __poll_t hid_sensor_custom_poll(struct file *file, static __poll_t hid_sensor_custom_poll(struct file *file,
......
...@@ -558,7 +558,7 @@ static int mousedev_open(struct inode *inode, struct file *file) ...@@ -558,7 +558,7 @@ static int mousedev_open(struct inode *inode, struct file *file)
goto err_free_client; goto err_free_client;
file->private_data = client; file->private_data = client;
nonseekable_open(inode, file); stream_open(inode, file);
return 0; return 0;
......
...@@ -134,6 +134,13 @@ identifier fops0.fops; ...@@ -134,6 +134,13 @@ identifier fops0.fops;
.llseek = no_llseek, .llseek = no_llseek,
}; };
@ has_noop_llseek @
identifier fops0.fops;
@@
struct file_operations fops = {
.llseek = noop_llseek,
};
@ has_mmap @ @ has_mmap @
identifier fops0.fops; identifier fops0.fops;
identifier mmap_f; identifier mmap_f;
...@@ -180,7 +187,7 @@ identifier splice_write_f; ...@@ -180,7 +187,7 @@ identifier splice_write_f;
// //
// XXX for simplicity require no .{read/write}_iter and no .splice_{read/write} for now. // XXX for simplicity require no .{read/write}_iter and no .splice_{read/write} for now.
// XXX maybe_steam.fops cannot be used in other rules - it gives "bad rule maybe_stream or bad variable fops". // XXX maybe_steam.fops cannot be used in other rules - it gives "bad rule maybe_stream or bad variable fops".
@ maybe_stream depends on (!has_llseek || has_no_llseek) && !has_mmap && !has_copy_file_range && !has_remap_file_range && !has_read_iter && !has_write_iter && !has_splice_read && !has_splice_write @ @ maybe_stream depends on (!has_llseek || has_no_llseek || has_noop_llseek) && !has_mmap && !has_copy_file_range && !has_remap_file_range && !has_read_iter && !has_write_iter && !has_splice_read && !has_splice_write @
identifier fops0.fops; identifier fops0.fops;
@@ @@
struct file_operations fops = { struct file_operations fops = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment