diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-15 03:08:08 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-15 03:08:08 +0300 |
commit | fcd98147ac71f35b69e2f50b5fddc5524dd2dfa8 (patch) | |
tree | 8471ea0f5092dc4e1fe503be2b0a07c569206794 | |
parent | 55167453111d3a1e600e29ba6c8e63906bb4821b (diff) | |
parent | 3975b097e577bac77267ed8df0f525e3ad3499ec (diff) | |
download | linux-fcd98147ac71f35b69e2f50b5fddc5524dd2dfa8.tar.xz |
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
0c4ab18fc33b ("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
-rw-r--r-- | drivers/hid/hid-sensor-custom.c | 2 | ||||
-rw-r--r-- | drivers/input/mousedev.c | 2 | ||||
-rw-r--r-- | scripts/coccinelle/api/stream_open.cocci | 9 |
3 files changed, 10 insertions, 3 deletions
diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c index c60f82673cf2..fb827c295842 100644 --- a/drivers/hid/hid-sensor-custom.c +++ b/drivers/hid/hid-sensor-custom.c @@ -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, diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index 3b73e0f17848..505c562a5daa 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c @@ -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; diff --git a/scripts/coccinelle/api/stream_open.cocci b/scripts/coccinelle/api/stream_open.cocci index 12ce18fa6b74..df00d6619b06 100644 --- a/scripts/coccinelle/api/stream_open.cocci +++ b/scripts/coccinelle/api/stream_open.cocci @@ -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; @@ -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 = { |