lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 509/717] proc mountinfo: make splice available again
    Date
    From: Linus Torvalds <torvalds@linux-foundation.org>

    [ Upstream commit 14e3e989f6a5d9646b6cf60690499cc8bdc11f7d ]

    Since commit 36e2c7421f02 ("fs: don't allow splice read/write without
    explicit ops") we've required that file operation structures explicitly
    enable splice support, rather than falling back to the default handlers.

    Most /proc files use the indirect 'struct proc_ops' to describe their
    file operations, and were fixed up to support splice earlier in commits
    40be821d627c..b24c30c67863, but the mountinfo files interact with the
    VFS directly using their own 'struct file_operations' and got missed as
    a result.

    This adds the necessary support for splice to work for /proc/*/mountinfo
    and friends.

    Reported-by: Joan Bruguera Micó <joanbrugueram@gmail.com>
    Reported-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=209971
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/proc_namespace.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/fs/proc_namespace.c
    +++ b/fs/proc_namespace.c
    @@ -320,7 +320,8 @@ static int mountstats_open(struct inode

    const struct file_operations proc_mounts_operations = {
    .open = mounts_open,
    - .read = seq_read,
    + .read_iter = seq_read_iter,
    + .splice_read = generic_file_splice_read,
    .llseek = seq_lseek,
    .release = mounts_release,
    .poll = mounts_poll,
    @@ -328,7 +329,8 @@ const struct file_operations proc_mounts

    const struct file_operations proc_mountinfo_operations = {
    .open = mountinfo_open,
    - .read = seq_read,
    + .read_iter = seq_read_iter,
    + .splice_read = generic_file_splice_read,
    .llseek = seq_lseek,
    .release = mounts_release,
    .poll = mounts_poll,
    @@ -336,7 +338,8 @@ const struct file_operations proc_mounti

    const struct file_operations proc_mountstats_operations = {
    .open = mountstats_open,
    - .read = seq_read,
    + .read_iter = seq_read_iter,
    + .splice_read = generic_file_splice_read,
    .llseek = seq_lseek,
    .release = mounts_release,
    };

    \
     
     \ /
      Last update: 2020-12-28 15:24    [W:4.030 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site