Skip to content

Commit

Permalink
Merge tag 'stream_open-5.3' of https://lab.nexedi.com/kirr/linux
Browse files Browse the repository at this point in the history
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
     0c4ab18 ("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
  • Loading branch information
torvalds committed Jul 15, 2019
2 parents 5516745 + 3975b09 commit fcd9814
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 3 deletions.
2 changes: 1 addition & 1 deletion drivers/hid/hid-sensor-custom.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
return -EBUSY;

return nonseekable_open(inode, file);
return stream_open(inode, file);
}

static __poll_t hid_sensor_custom_poll(struct file *file,
Expand Down
2 changes: 1 addition & 1 deletion drivers/input/mousedev.c
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ static int mousedev_open(struct inode *inode, struct file *file)
goto err_free_client;

file->private_data = client;
nonseekable_open(inode, file);
stream_open(inode, file);

return 0;

Expand Down
9 changes: 8 additions & 1 deletion scripts/coccinelle/api/stream_open.cocci
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,13 @@ identifier fops0.fops;
.llseek = no_llseek,
};

@ has_noop_llseek @
identifier fops0.fops;
@@
struct file_operations fops = {
.llseek = noop_llseek,
};

@ has_mmap @
identifier fops0.fops;
identifier mmap_f;
Expand Down Expand Up @@ -180,7 +187,7 @@ identifier splice_write_f;
//
// 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".
@ 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;
@@
struct file_operations fops = {
Expand Down

0 comments on commit fcd9814

Please sign in to comment.