Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+10 -3
+1 -1
drivers/hid/hid-sensor-custom.c
··· 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,
+1 -1
drivers/input/mousedev.c
··· 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
+8 -1
scripts/coccinelle/api/stream_open.cocci
··· 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; ··· 187 180 // 188 181 // XXX for simplicity require no .{read/write}_iter and no .splice_{read/write} for now. 189 182 // XXX maybe_steam.fops cannot be used in other rules - it gives "bad rule maybe_stream or bad variable fops". 190 - @ 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 @ 183 + @ 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 @ 191 184 identifier fops0.fops; 192 185 @@ 193 186 struct file_operations fops = {