fs: clear or set FMODE_LSEEK based on llseek function
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 29 Jun 2022 13:06:57 +0000 (15:06 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 16 Jul 2022 13:18:56 +0000 (09:18 -0400)
commite7478158e1378325907edfdd960eca98a1be405b
tree69d1ab990e63cf106b1a81fede39cef603991a5c
parentb13baccc3850ca8b8cccbf8ed9912dbaa0fdf7f3
fs: clear or set FMODE_LSEEK based on llseek function

Pipe-like behaviour on llseek(2) (i.e. unconditionally failing with
-ESPIPE) can be expresses in 3 ways:
1) ->llseek set to NULL in file_operations
2) ->llseek set to no_llseek in file_operations
3) FMODE_LSEEK *not* set in ->f_mode.

Enforce (3) in cases (1) and (2); that will allow to simplify the
checks and eventually get rid of no_llseek boilerplate.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/file_table.c
fs/open.c