Skip to content
Snippets Groups Projects
  1. Dec 21, 2022
  2. Dec 19, 2022
  3. Dec 14, 2022
    • Greg Kroah-Hartman's avatar
    • Harshit Mogalapalli's avatar
      io_uring: Fix a null-ptr-deref in io_tctx_exit_cb() · f895511d
      Harshit Mogalapalli authored
      
      [ Upstream commit 998b30c3 ]
      
      Syzkaller reports a NULL deref bug as follows:
      
       BUG: KASAN: null-ptr-deref in io_tctx_exit_cb+0x53/0xd3
       Read of size 4 at addr 0000000000000138 by task file1/1955
      
       CPU: 1 PID: 1955 Comm: file1 Not tainted 6.1.0-rc7-00103-gef4d3ea40565 #75
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.el7 04/01/2014
       Call Trace:
        <TASK>
        dump_stack_lvl+0xcd/0x134
        ? io_tctx_exit_cb+0x53/0xd3
        kasan_report+0xbb/0x1f0
        ? io_tctx_exit_cb+0x53/0xd3
        kasan_check_range+0x140/0x190
        io_tctx_exit_cb+0x53/0xd3
        task_work_run+0x164/0x250
        ? task_work_cancel+0x30/0x30
        get_signal+0x1c3/0x2440
        ? lock_downgrade+0x6e0/0x6e0
        ? lock_downgrade+0x6e0/0x6e0
        ? exit_signals+0x8b0/0x8b0
        ? do_raw_read_unlock+0x3b/0x70
        ? do_raw_spin_unlock+0x50/0x230
        arch_do_signal_or_restart+0x82/0x2470
        ? kmem_cache_free+0x260/0x4b0
        ? putname+0xfe/0x140
        ? get_sigframe_size+0x10/0x10
        ? do_execveat_common.isra.0+0x226/0x710
        ? lockdep_hardirqs_on+0x79/0x100
        ? putname+0xfe/0x140
        ? do_execveat_common.isra.0+0x238/0x710
        exit_to_user_mode_prepare+0x15f/0x250
        syscall_exit_to_user_mode+0x19/0x50
        do_syscall_64+0x42/0xb0
        entry_SYSCALL_64_after_hwframe+0x63/0xcd
       RIP: 0023:0x0
       Code: Unable to access opcode bytes at 0xffffffffffffffd6.
       RSP: 002b:00000000fffb7790 EFLAGS: 00000200 ORIG_RAX: 000000000000000b
       RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
       RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
       RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
       R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
       R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
        </TASK>
       Kernel panic - not syncing: panic_on_warn set ...
      
      This happens because the adding of task_work from io_ring_exit_work()
      isn't synchronized with canceling all work items from eg exec. The
      execution of the two are ordered in that they are both run by the task
      itself, but if io_tctx_exit_cb() is queued while we're canceling all
      work items off exec AND gets executed when the task exits to userspace
      rather than in the main loop in io_uring_cancel_generic(), then we can
      find current->io_uring == NULL and hit the above crash.
      
      It's safe to add this NULL check here, because the execution of the two
      paths are done by the task itself.
      
      Cc: stable@vger.kernel.org
      Fixes: d56d938b ("io_uring: do ctx initiated file note removal")
      Reported-by: default avatarsyzkaller <syzkaller@googlegroups.com>
      Signed-off-by: default avatarHarshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
      Link: https://lore.kernel.org/r/20221206093833.3812138-1-harshit.m.mogalapalli@oracle.com
      
      
      [axboe: add code comment and also put an explanation in the commit msg]
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f895511d
    • Jens Axboe's avatar
      io_uring: move to separate directory · f435c66d
      Jens Axboe authored
      
      [ Upstream commit ed29b0b4 ]
      
      In preparation for splitting io_uring up a bit, move it into its own
      top level directory. It didn't really belong in fs/ anyway, as it's
      not a file system only API.
      
      This adds io_uring/ and moves the core files in there, and updates the
      MAINTAINERS file for the new location.
      
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Stable-dep-of: 998b30c3 ("io_uring: Fix a null-ptr-deref in io_tctx_exit_cb()")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f435c66d
    • Masahiro Yamada's avatar
      block: move CONFIG_BLOCK guard to top Makefile · d9e1e5d8
      Masahiro Yamada authored
      
      [ Upstream commit 4c928904 ]
      
      Every object under block/ depends on CONFIG_BLOCK.
      
      Move the guard to the top Makefile since there is no point to
      descend into block/ if CONFIG_BLOCK=n.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Link: https://lore.kernel.org/r/20210927140000.866249-5-masahiroy@kernel.org
      
      
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Stable-dep-of: 998b30c3 ("io_uring: Fix a null-ptr-deref in io_tctx_exit_cb()")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d9e1e5d8
    • Frank Jungclaus's avatar
      can: esd_usb: Allow REC and TEC to return to zero · e5c0bc4f
      Frank Jungclaus authored
      
      [ Upstream commit 918ee491 ]
      
      We don't get any further EVENT from an esd CAN USB device for changes
      on REC or TEC while those counters converge to 0 (with ecc == 0). So
      when handling the "Back to Error Active"-event force txerr = rxerr =
      0, otherwise the berr-counters might stay on values like 95 forever.
      
      Also, to make life easier during the ongoing development a
      netdev_dbg() has been introduced to allow dumping error events send by
      an esd CAN USB device.
      
      Fixes: 96d8e903 ("can: Add driver for esd CAN-USB/2 device")
      Signed-off-by: default avatarFrank Jungclaus <frank.jungclaus@esd.eu>
      Link: https://lore.kernel.org/all/20221130202242.3998219-2-frank.jungclaus@esd.eu
      
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e5c0bc4f
    • Alexandra Winter's avatar
      s390/qeth: fix use-after-free in hsci · db6343a5
      Alexandra Winter authored
      
      [ Upstream commit ebaaadc3 ]
      
      KASAN found that addr was dereferenced after br2dev_event_work was freed.
      
      ==================================================================
      BUG: KASAN: use-after-free in qeth_l2_br2dev_worker+0x5ba/0x6b0
      Read of size 1 at addr 00000000fdcea440 by task kworker/u760:4/540
      CPU: 17 PID: 540 Comm: kworker/u760:4 Tainted: G            E      6.1.0-20221128.rc7.git1.5aa3bed4ce83.300.fc36.s390x+kasan #1
      Hardware name: IBM 8561 T01 703 (LPAR)
      Workqueue: 0.0.8000_event qeth_l2_br2dev_worker
      Call Trace:
       [<000000016944d4ce>] dump_stack_lvl+0xc6/0xf8
       [<000000016942cd9c>] print_address_description.constprop.0+0x34/0x2a0
       [<000000016942d118>] print_report+0x110/0x1f8
       [<0000000167a7bd04>] kasan_report+0xfc/0x128
       [<000000016938d79a>] qeth_l2_br2dev_worker+0x5ba/0x6b0
       [<00000001673edd1e>] process_one_work+0x76e/0x1128
       [<00000001673ee85c>] worker_thread+0x184/0x1098
       [<000000016740718a>] kthread+0x26a/0x310
       [<00000001672c606a>] __ret_from_fork+0x8a/0xe8
       [<00000001694711da>] ret_from_fork+0xa/0x40
      Allocated by task 108338:
       kasan_save_stack+0x40/0x68
       kasan_set_track+0x36/0x48
       __kasan_kmalloc+0xa0/0xc0
       qeth_l2_switchdev_event+0x25a/0x738
       atomic_notifier_call_chain+0x9c/0xf8
       br_switchdev_fdb_notify+0xf4/0x110
       fdb_notify+0x122/0x180
       fdb_add_entry.constprop.0.isra.0+0x312/0x558
       br_fdb_add+0x59e/0x858
       rtnl_fdb_add+0x58a/0x928
       rtnetlink_rcv_msg+0x5f8/0x8d8
       netlink_rcv_skb+0x1f2/0x408
       netlink_unicast+0x570/0x790
       netlink_sendmsg+0x752/0xbe0
       sock_sendmsg+0xca/0x110
       ____sys_sendmsg+0x510/0x6a8
       ___sys_sendmsg+0x12a/0x180
       __sys_sendmsg+0xe6/0x168
       __do_sys_socketcall+0x3c8/0x468
       do_syscall+0x22c/0x328
       __do_syscall+0x94/0xf0
       system_call+0x82/0xb0
      Freed by task 540:
       kasan_save_stack+0x40/0x68
       kasan_set_track+0x36/0x48
       kasan_save_free_info+0x4c/0x68
       ____kasan_slab_free+0x14e/0x1a8
       __kasan_slab_free+0x24/0x30
       __kmem_cache_free+0x168/0x338
       qeth_l2_br2dev_worker+0x154/0x6b0
       process_one_work+0x76e/0x1128
       worker_thread+0x184/0x1098
       kthread+0x26a/0x310
       __ret_from_fork+0x8a/0xe8
       ret_from_fork+0xa/0x40
      Last potentially related work creation:
       kasan_save_stack+0x40/0x68
       __kasan_record_aux_stack+0xbe/0xd0
       insert_work+0x56/0x2e8
       __queue_work+0x4ce/0xd10
       queue_work_on+0xf4/0x100
       qeth_l2_switchdev_event+0x520/0x738
       atomic_notifier_call_chain+0x9c/0xf8
       br_switchdev_fdb_notify+0xf4/0x110
       fdb_notify+0x122/0x180
       fdb_add_entry.constprop.0.isra.0+0x312/0x558
       br_fdb_add+0x59e/0x858
       rtnl_fdb_add+0x58a/0x928
       rtnetlink_rcv_msg+0x5f8/0x8d8
       netlink_rcv_skb+0x1f2/0x408
       netlink_unicast+0x570/0x790
       netlink_sendmsg+0x752/0xbe0
       sock_sendmsg+0xca/0x110
       ____sys_sendmsg+0x510/0x6a8
       ___sys_sendmsg+0x12a/0x180
       __sys_sendmsg+0xe6/0x168
       __do_sys_socketcall+0x3c8/0x468
       do_syscall+0x22c/0x328
       __do_syscall+0x94/0xf0
       system_call+0x82/0xb0
      Second to last potentially related work creation:
       kasan_save_stack+0x40/0x68
       __kasan_record_aux_stack+0xbe/0xd0
       kvfree_call_rcu+0xb2/0x760
       kernfs_unlink_open_file+0x348/0x430
       kernfs_fop_release+0xc2/0x320
       __fput+0x1ae/0x768
       task_work_run+0x1bc/0x298
       exit_to_user_mode_prepare+0x1a0/0x1a8
       __do_syscall+0x94/0xf0
       system_call+0x82/0xb0
      The buggy address belongs to the object at 00000000fdcea400
       which belongs to the cache kmalloc-96 of size 96
      The buggy address is located 64 bytes inside of
       96-byte region [00000000fdcea400, 00000000fdcea460)
      The buggy address belongs to the physical page:
      page:000000005a9c26e8 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0xfdcea
      flags: 0x3ffff00000000200(slab|node=0|zone=1|lastcpupid=0x1ffff)
      raw: 3ffff00000000200 0000000000000000 0000000100000122 000000008008cc00
      raw: 0000000000000000 0020004100000000 ffffffff00000001 0000000000000000
      page dumped because: kasan: bad access detected
      Memory state around the buggy address:
       00000000fdcea300: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
       00000000fdcea380: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
      >00000000fdcea400: fa fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
                                                 ^
       00000000fdcea480: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
       00000000fdcea500: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
      ==================================================================
      
      Fixes: f7936b7b ("s390/qeth: Update MACs of LEARNING_SYNC device")
      Reported-by: default avatarThorsten Winkler <twinkler@linux.ibm.com>
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Reviewed-by: default avatarWenjia Zhang <wenjia@linux.ibm.com>
      Reviewed-by: default avatarThorsten Winkler <twinkler@linux.ibm.com>
      Link: https://lore.kernel.org/r/20221207105304.20494-1-wintera@linux.ibm.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      db6343a5
Loading