1. 18 1月, 2021 6 次提交
    • P
      io_uring: add a helper for setting a ref node · dd81dbb9
      Pavel Begunkov 提交于
      stable inclusion
      from stable-5.10.5
      commit b25b86936a8dccd6f6ec9045bede4774b6c7c7cf
      bugzilla: 46931
      
      --------------------------------
      
      commit 1642b445 upstream.
      
      Setting a new reference node to a file data is not trivial, don't repeat
      it, add and use a helper.
      
      Cc: stable@vger.kernel.org # 5.6+
      Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      dd81dbb9
    • J
      io_uring: use bottom half safe lock for fixed file data · 94fe557f
      Jens Axboe 提交于
      stable inclusion
      from stable-5.10.5
      commit 25a2de679b5d55ead2f99881c7d3e9b745325f39
      bugzilla: 46931
      
      --------------------------------
      
      commit ac0648a5 upstream.
      
      io_file_data_ref_zero() can be invoked from soft-irq from the RCU core,
      hence we need to ensure that the file_data lock is bottom half safe. Use
      the _bh() variants when grabbing this lock.
      
      Reported-by: syzbot+1f4ba1e5520762c523c6@syzkaller.appspotmail.com
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      94fe557f
    • J
      io_uring: don't assume mm is constant across submits · 8b40a98b
      Jens Axboe 提交于
      stable inclusion
      from stable-5.10.5
      commit 7247bc60e8e1458d89ea53179fce02d2307aac7f
      bugzilla: 46931
      
      --------------------------------
      
      commit 77788775 upstream.
      
      If we COW the identity, we assume that ->mm never changes. But this
      isn't true of multiple processes end up sharing the ring. Hence treat
      id->mm like like any other process compontent when it comes to the
      identity mapping. This is pretty trivial, just moving the existing grab
      into io_grab_identity(), and including a check for the match.
      
      Cc: stable@vger.kernel.org # 5.10
      Fixes: 1e6fa521 ("io_uring: COW io_identity on mismatch")
      Reported-by: Christian Brauner <christian.brauner@ubuntu.com>:
      Tested-by: Christian Brauner <christian.brauner@ubuntu.com>:
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      8b40a98b
    • J
      jffs2: Fix NULL pointer dereference in rp_size fs option parsing · 1e1b6bf6
      Jamie Iles 提交于
      stable inclusion
      from stable-5.10.5
      commit 6d63cc42bb8f422a96deafdab9409b69cb1a7925
      bugzilla: 46931
      
      --------------------------------
      
      [ Upstream commit a61df3c4 ]
      
      syzkaller found the following JFFS2 splat:
      
        Unable to handle kernel paging request at virtual address dfffa00000000001
        Mem abort info:
          ESR = 0x96000004
          EC = 0x25: DABT (current EL), IL = 32 bits
          SET = 0, FnV = 0
          EA = 0, S1PTW = 0
        Data abort info:
          ISV = 0, ISS = 0x00000004
          CM = 0, WnR = 0
        [dfffa00000000001] address between user and kernel address ranges
        Internal error: Oops: 96000004 [#1] SMP
        Dumping ftrace buffer:
           (ftrace buffer empty)
        Modules linked in:
        CPU: 0 PID: 12745 Comm: syz-executor.5 Tainted: G S                5.9.0-rc8+ #98
        Hardware name: linux,dummy-virt (DT)
        pstate: 20400005 (nzCv daif +PAN -UAO BTYPE=--)
        pc : jffs2_parse_param+0x138/0x308 fs/jffs2/super.c:206
        lr : jffs2_parse_param+0x108/0x308 fs/jffs2/super.c:205
        sp : ffff000022a57910
        x29: ffff000022a57910 x28: 0000000000000000
        x27: ffff000057634008 x26: 000000000000d800
        x25: 000000000000d800 x24: ffff0000271a9000
        x23: ffffa0001adb5dc0 x22: ffff000023fdcf00
        x21: 1fffe0000454af2c x20: ffff000024cc9400
        x19: 0000000000000000 x18: 0000000000000000
        x17: 0000000000000000 x16: ffffa000102dbdd0
        x15: 0000000000000000 x14: ffffa000109e44bc
        x13: ffffa00010a3a26c x12: ffff80000476e0b3
        x11: 1fffe0000476e0b2 x10: ffff80000476e0b2
        x9 : ffffa00010a3ad60 x8 : ffff000023b70593
        x7 : 0000000000000003 x6 : 00000000f1f1f1f1
        x5 : ffff000023fdcf00 x4 : 0000000000000002
        x3 : ffffa00010000000 x2 : 0000000000000001
        x1 : dfffa00000000000 x0 : 0000000000000008
        Call trace:
         jffs2_parse_param+0x138/0x308 fs/jffs2/super.c:206
         vfs_parse_fs_param+0x234/0x4e8 fs/fs_context.c:117
         vfs_parse_fs_string+0xe8/0x148 fs/fs_context.c:161
         generic_parse_monolithic+0x17c/0x208 fs/fs_context.c:201
         parse_monolithic_mount_data+0x7c/0xa8 fs/fs_context.c:649
         do_new_mount fs/namespace.c:2871 [inline]
         path_mount+0x548/0x1da8 fs/namespace.c:3192
         do_mount+0x124/0x138 fs/namespace.c:3205
         __do_sys_mount fs/namespace.c:3413 [inline]
         __se_sys_mount fs/namespace.c:3390 [inline]
         __arm64_sys_mount+0x164/0x238 fs/namespace.c:3390
         __invoke_syscall arch/arm64/kernel/syscall.c:36 [inline]
         invoke_syscall arch/arm64/kernel/syscall.c:48 [inline]
         el0_svc_common.constprop.0+0x15c/0x598 arch/arm64/kernel/syscall.c:149
         do_el0_svc+0x60/0x150 arch/arm64/kernel/syscall.c:195
         el0_svc+0x34/0xb0 arch/arm64/kernel/entry-common.c:226
         el0_sync_handler+0xc8/0x5b4 arch/arm64/kernel/entry-common.c:236
         el0_sync+0x15c/0x180 arch/arm64/kernel/entry.S:663
        Code: d2d40001 f2fbffe1 91002260 d343fc02 (38e16841)
        ---[ end trace 4edf690313deda44 ]---
      
      This is because since ec10a24f, the option parsing happens before
      fill_super and so the MTD device isn't associated with the filesystem.
      Defer the size check until there is a valid association.
      
      Fixes: ec10a24f ("vfs: Convert jffs2 to use the new mount API")
      Cc: <stable@vger.kernel.org>
      Cc: David Howells <dhowells@redhat.com>
      Signed-off-by: NJamie Iles <jamie@nuviainc.com>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      1e1b6bf6
    • L
      jffs2: Allow setting rp_size to zero during remounting · b1f18c4e
      lizhe 提交于
      stable inclusion
      from stable-5.10.5
      commit 58dc34446c5280b3d069c27c4b0a56a08c1a2da8
      bugzilla: 46931
      
      --------------------------------
      
      [ Upstream commit cd3ed3c7 ]
      
      Set rp_size to zero will be ignore during remounting.
      
      The method to identify whether we input a remounting option of
      rp_size is to check if the rp_size input is zero. It can not work
      well if we pass "rp_size=0".
      
      This patch add a bool variable "set_rp_size" to fix this problem.
      Reported-by: NJubin Zhong <zhongjubin@huawei.com>
      Signed-off-by: Nlizhe <lizhe67@huawei.com>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      b1f18c4e
    • P
      io_uring: close a small race gap for files cancel · b3818042
      Pavel Begunkov 提交于
      stable inclusion
      from stable-5.10.5
      commit 52504a61ab999289d406f5dec930d3e3f386365d
      bugzilla: 46931
      
      --------------------------------
      
      commit dfea9fce upstream.
      
      The purpose of io_uring_cancel_files() is to wait for all requests
      matching ->files to go/be cancelled. We should first drop files of a
      request in io_req_drop_files() and only then make it undiscoverable for
      io_uring_cancel_files.
      
      First drop, then delete from list. It's ok to leave req->id->files
      dangling, because it's not dereferenced by cancellation code, only
      compared against. It would potentially go to sleep and be awaken by
      following in io_req_drop_files() wake_up().
      
      Fixes: 0f212204 ("io_uring: don't rely on weak ->files references")
      Cc: <stable@vger.kernel.org> # 5.5+
      Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NChen Jun <chenjun102@huawei.com>
      Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
      b3818042
  2. 12 1月, 2021 34 次提交