Now that all callers of ->llseek are going through vfs_llseek(), we don't gain anything by keeping no_llseek around. Nothing compares it or calls it. Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx> --- fs/read_write.c | 16 +++------------- include/linux/fs.h | 1 - 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index b1b1cdfee9d3..f0ecfd0fb843 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -227,12 +227,6 @@ loff_t noop_llseek(struct file *file, loff_t offset, int whence) } EXPORT_SYMBOL(noop_llseek); -loff_t no_llseek(struct file *file, loff_t offset, int whence) -{ - return -ESPIPE; -} -EXPORT_SYMBOL(no_llseek); - loff_t default_llseek(struct file *file, loff_t offset, int whence) { struct inode *inode = file_inode(file); @@ -290,14 +284,10 @@ EXPORT_SYMBOL(default_llseek); loff_t vfs_llseek(struct file *file, loff_t offset, int whence) { - loff_t (*fn)(struct file *, loff_t, int); + if ((file->f_mode & FMODE_LSEEK) && file->f_op->llseek) + return file->f_op->llseek(file, offset, whence); + return -ESPIPE; - fn = no_llseek; - if (file->f_mode & FMODE_LSEEK) { - if (file->f_op->llseek) - fn = file->f_op->llseek; - } - return fn(file, offset, whence); } EXPORT_SYMBOL(vfs_llseek); diff --git a/include/linux/fs.h b/include/linux/fs.h index 9ad5e3520fae..0cb5a1706e1f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3022,7 +3022,6 @@ extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, extern void file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); extern loff_t noop_llseek(struct file *file, loff_t offset, int whence); -extern loff_t no_llseek(struct file *file, loff_t offset, int whence); extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize); extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence); extern loff_t generic_file_llseek_size(struct file *file, loff_t offset, -- 2.35.1