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
Unified · Split
| @@ -687,7 +687,7 @@ static int hid_sensor_custom_open(struct inode *inode, struct file *file) · 686 unmodified lines | ||
| 687 | 687 | if (test_and_set_bit(0, &sensor_inst->misc_opened)) |
| 688 | 688 | return -EBUSY; |
| 689 | 689 | |
| 690 | − return nonseekable_open(inode, file); | |
| 690 | + return stream_open(inode, file); | |
| 691 | 691 | } |
| 692 | 692 | |
| 693 | 693 | static __poll_t hid_sensor_custom_poll(struct file *file, |
| @@ -558,7 +558,7 @@ static int mousedev_open(struct inode *inode, struct file *file) · 557 unmodified lines | ||
| 558 | 558 | goto err_free_client; |
| 559 | 559 | |
| 560 | 560 | file->private_data = client; |
| 561 | − nonseekable_open(inode, file); | |
| 561 | + stream_open(inode, file); | |
| 562 | 562 | |
| 563 | 563 | return 0; |
| 564 | 564 | |
| @@ -134,6 +134,13 @@ identifier fops0.fops; · 133 unmodified lines | ||
| 134 | 134 | .llseek = no_llseek, |
| 135 | 135 | }; |
| 136 | 136 | |
| 137 | +@ has_noop_llseek @ | |
| 138 | +identifier fops0.fops; | |
| 139 | +@@ | |
| 140 | + struct file_operations fops = { | |
| 141 | + .llseek = noop_llseek, | |
| 142 | + }; | |
| 143 | + | |
| 137 | 144 | @ has_mmap @ |
| 138 | 145 | identifier fops0.fops; |
| 139 | 146 | identifier mmap_f; |
| @@ -180,7 +187,7 @@ identifier splice_write_f; · 40 unmodified lines | ||
| 180 | 187 | // |
| 181 | 188 | // XXX for simplicity require no .{read/write}_iter and no .splice_{read/write} for now. |
| 182 | 189 | // XXX maybe_steam.fops cannot be used in other rules - it gives "bad rule maybe_stream or bad variable fops". |
| 183 | −@ 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 @ | |
| 190 | +@ 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 @ | |
| 184 | 191 | identifier fops0.fops; |
| 185 | 192 | @@ |
| 186 | 193 | struct file_operations fops = { |