1. 17 Jun, 2022 13 commits
  2. 16 Jun, 2022 12 commits
    • Mikulas Patocka's avatar
      dm mirror log: round up region bitmap size to BITS_PER_LONG · 85e123c2
      Mikulas Patocka authored
      The code in dm-log rounds up bitset_size to 32 bits. It then uses
      find_next_zero_bit_le on the allocated region. find_next_zero_bit_le
      accesses the bitmap using unsigned long pointers. So, on 64-bit
      architectures, it may access 4 bytes beyond the allocated size.
      
      Fix this bug by rounding up bitset_size to BITS_PER_LONG.
      
      This bug was found by running the lvm2 testsuite with kasan.
      
      Fixes: 29121bd0 ("[PATCH] dm mirror log: bitset_size fix")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      85e123c2
    • Mikulas Patocka's avatar
      dm: fix narrow race for REQ_NOWAIT bios being issued despite no support · 1ee88de3
      Mikulas Patocka authored
      Starting with the commit 63a225c9fd20, device mapper has an optimization
      that it will take cheaper table lock (dm_get_live_table_fast instead of
      dm_get_live_table) if the bio has REQ_NOWAIT. The bios with REQ_NOWAIT
      must not block in the target request routine, if they did, we would be
      blocking while holding rcu_read_lock, which is prohibited.
      
      The targets that are suitable for REQ_NOWAIT optimization (and that don't
      block in the map routine) have the flag DM_TARGET_NOWAIT set. Device
      mapper will test if all the targets and all the devices in a table
      support nowait (see the function dm_table_supports_nowait) and it will set
      or clear the QUEUE_FLAG_NOWAIT flag on its request queue according to
      this check.
      
      There's a test in submit_bio_noacct: "if ((bio->bi_opf & REQ_NOWAIT) &&
      !blk_queue_nowait(q)) goto not_supported" - this will make sure that
      REQ_NOWAIT bios can't enter a request queue that doesn't support them.
      
      This mechanism works to prevent REQ_NOWAIT bios from reaching dm targets
      that don't support the REQ_NOWAIT flag (and that may block in the map
      routine) - except that there is a small race condition:
      
      submit_bio_noacct checks if the queue has the QUEUE_FLAG_NOWAIT without
      holding any locks. Immediatelly after this check, the device mapper table
      may be reloaded with a table that doesn't support REQ_NOWAIT (for example,
      if we start moving the logical volume or if we activate a snapshot).
      However the REQ_NOWAIT bio that already passed the check in
      submit_bio_noacct would be sent to device mapper, where it could be
      redirected to a dm target that doesn't support REQ_NOWAIT - the result is
      sleeping while we hold rcu_read_lock.
      
      In order to fix this race, we double-check if the target supports
      REQ_NOWAIT while we hold the table lock (so that the table can't change
      under us).
      
      Fixes: 563a225c ("dm: introduce dm_{get,put}_live_table_bio called from dm_submit_bio")
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      1ee88de3
    • Mikulas Patocka's avatar
      dm: fix use-after-free in dm_put_live_table_bio · 5d7362d0
      Mikulas Patocka authored
      dm_put_live_table_bio is called from the end of dm_submit_bio.
      However, at this point, the bio may be already finished and the caller
      may have freed the bio. Consequently, dm_put_live_table_bio accesses
      the stale "bio" pointer.
      
      Fix this bug by loading the bi_opf value and passing it to
      dm_get_live_table_bio and dm_put_live_table_bio instead of the bio.
      
      This bug was found by running the lvm2 testsuite with kasan.
      
      Fixes: 563a225c ("dm: introduce dm_{get,put}_live_table_bio called from dm_submit_bio")
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      5d7362d0
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2022-06-16' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · 2f90ec12
      Dave Airlie authored
      Two fixes for TTM, one for a NULL pointer dereference and one to make sure
      the buffer is pinned prior to a bulk move, and a fix for a spurious
      compiler warning.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220616072519.qwrsefsemejefowu@houat
      2f90ec12
    • Linus Torvalds's avatar
      Merge tag 'audit-pr-20220616' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit · 0639b599
      Linus Torvalds authored
      Pull audit fix from Paul Moore:
       "A single audit patch to fix a problem where we were not properly
        freeing memory allocated when recording information related to a
        module load"
      
      * tag 'audit-pr-20220616' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
        audit: free module name
      0639b599
    • Linus Torvalds's avatar
      Merge tag 'selinux-pr-20220616' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux · 6decbf75
      Linus Torvalds authored
      Pull selinux fix from Paul Moore:
       "A single SELinux patch to fix memory leaks when mounting filesystems
        with SELinux mount options"
      
      * tag 'selinux-pr-20220616' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
        selinux: free contexts previously transferred in selinux_add_opt()
      6decbf75
    • Linus Torvalds's avatar
      Merge tag 'net-5.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 48a23ec6
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Mostly driver fixes.
      
        Current release - regressions:
      
         - Revert "net: Add a second bind table hashed by port and address",
           needs more work
      
         - amd-xgbe: use platform_irq_count(), static setup of IRQ resources
           had been removed from DT core
      
         - dts: at91: ksz9477_evb: add phy-mode to fix port/phy validation
      
        Current release - new code bugs:
      
         - hns3: modify the ring param print info
      
        Previous releases - always broken:
      
         - axienet: make the 64b addressable DMA depends on 64b architectures
      
         - iavf: fix issue with MAC address of VF shown as zero
      
         - ice: fix PTP TX timestamp offset calculation
      
         - usb: ax88179_178a needs FLAG_SEND_ZLP
      
        Misc:
      
         - document some net.sctp.* sysctls"
      
      * tag 'net-5.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (31 commits)
        net: axienet: add missing error return code in axienet_probe()
        Revert "net: Add a second bind table hashed by port and address"
        net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg
        net: usb: ax88179_178a needs FLAG_SEND_ZLP
        MAINTAINERS: add include/dt-bindings/net to NETWORKING DRIVERS
        ARM: dts: at91: ksz9477_evb: fix port/phy validation
        net: bgmac: Fix an erroneous kfree() in bgmac_remove()
        ice: Fix memory corruption in VF driver
        ice: Fix queue config fail handling
        ice: Sync VLAN filtering features for DVM
        ice: Fix PTP TX timestamp offset calculation
        mlxsw: spectrum_cnt: Reorder counter pools
        docs: networking: phy: Fix a typo
        amd-xgbe: Use platform_irq_count()
        octeontx2-vf: Add support for adaptive interrupt coalescing
        xilinx:  Fix build on x86.
        net: axienet: Use iowrite64 to write all 64b descriptor pointers
        net: axienet: make the 64b addresable DMA depends on 64b archectures
        net: hns3: fix tm port shapping of fibre port is incorrect after driver initialization
        net: hns3: fix PF rss size initialization bug
        ...
      48a23ec6
    • Yang Yingliang's avatar
      net: axienet: add missing error return code in axienet_probe() · 2e7bf4a6
      Yang Yingliang authored
      It should return error code in error path in axienet_probe().
      
      Fixes: 00be43a7 ("net: axienet: make the 64b addresable DMA depends on 64b archectures")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Link: https://lore.kernel.org/r/20220616062917.3601-1-yangyingliang@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2e7bf4a6
    • Joanne Koong's avatar
      Revert "net: Add a second bind table hashed by port and address" · 593d1ebe
      Joanne Koong authored
      This reverts:
      
      commit d5a42de8 ("net: Add a second bind table hashed by port and address")
      commit 538aaf9b ("selftests: Add test for timing a bind request to a port with a populated bhash entry")
      Link: https://lore.kernel.org/netdev/20220520001834.2247810-1-kuba@kernel.org/
      
      There are a few things that need to be fixed here:
      * Updating bhash2 in cases where the socket's rcv saddr changes
      * Adding bhash2 hashbucket locks
      
      Links to syzbot reports:
      https://lore.kernel.org/netdev/00000000000022208805e0df247a@google.com/
      https://lore.kernel.org/netdev/0000000000003f33bc05dfaf44fe@google.com/
      
      Fixes: d5a42de8 ("net: Add a second bind table hashed by port and address")
      Reported-by: syzbot+015d756bbd1f8b5c8f09@syzkaller.appspotmail.com
      Reported-by: syzbot+98fd2d1422063b0f8c44@syzkaller.appspotmail.com
      Reported-by: syzbot+0a847a982613c6438fba@syzkaller.appspotmail.com
      Signed-off-by: default avatarJoanne Koong <joannelkoong@gmail.com>
      Link: https://lore.kernel.org/r/20220615193213.2419568-1-joannelkoong@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      593d1ebe
    • Jan Kara's avatar
      init: Initialize noop_backing_dev_info early · 4bca7e80
      Jan Kara authored
      noop_backing_dev_info is used by superblocks of various
      pseudofilesystems such as kdevtmpfs. After commit 10e14073
      ("writeback: Fix inode->i_io_list not be protected by inode->i_lock
      error") this broke because __mark_inode_dirty() started to access more
      fields from noop_backing_dev_info and this led to crashes inside
      locked_inode_to_wb_and_lock_list() called from __mark_inode_dirty().
      Fix the problem by initializing noop_backing_dev_info before the
      filesystems get mounted.
      
      Fixes: 10e14073 ("writeback: Fix inode->i_io_list not be protected by inode->i_lock error")
      Reported-and-tested-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
      Reported-and-tested-by: default avatarAlexandru Elisei <alexandru.elisei@arm.com>
      Reported-and-tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      4bca7e80
    • Ye Bin's avatar
      ext2: fix fs corruption when trying to remove a non-empty directory with IO error · 27cfa258
      Ye Bin authored
      We got issue as follows:
      [home]# mount  /dev/sdd  test
      [home]# cd test
      [test]# ls
      dir1  lost+found
      [test]# rmdir  dir1
      ext2_empty_dir: inject fault
      [test]# ls
      lost+found
      [test]# cd ..
      [home]# umount test
      [home]# fsck.ext2 -fn  /dev/sdd
      e2fsck 1.42.9 (28-Dec-2013)
      Pass 1: Checking inodes, blocks, and sizes
      Inode 4065, i_size is 0, should be 1024.  Fix? no
      
      Pass 2: Checking directory structure
      Pass 3: Checking directory connectivity
      Unconnected directory inode 4065 (/???)
      Connect to /lost+found? no
      
      '..' in ... (4065) is / (2), should be <The NULL inode> (0).
      Fix? no
      
      Pass 4: Checking reference counts
      Inode 2 ref count is 3, should be 4.  Fix? no
      
      Inode 4065 ref count is 2, should be 3.  Fix? no
      
      Pass 5: Checking group summary information
      
      /dev/sdd: ********** WARNING: Filesystem still has errors **********
      
      /dev/sdd: 14/128016 files (0.0% non-contiguous), 18477/512000 blocks
      
      Reason is same with commit 7aab5c84. We can't assume directory
      is empty when read directory entry failed.
      
      Link: https://lore.kernel.org/r/20220615090010.1544152-1-yebin10@huawei.comSigned-off-by: default avatarYe Bin <yebin10@huawei.com>
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      27cfa258
    • Christian Göttsche's avatar
      selinux: free contexts previously transferred in selinux_add_opt() · cad140d0
      Christian Göttsche authored
      `selinux_add_opt()` stopped taking ownership of the passed context since
      commit 70f4169a ("selinux: parse contexts for mount options early").
      
          unreferenced object 0xffff888114dfd140 (size 64):
            comm "mount", pid 15182, jiffies 4295687028 (age 796.340s)
            hex dump (first 32 bytes):
              73 79 73 74 65 6d 5f 75 3a 6f 62 6a 65 63 74 5f  system_u:object_
              72 3a 74 65 73 74 5f 66 69 6c 65 73 79 73 74 65  r:test_filesyste
            backtrace:
              [<ffffffffa07dbef4>] kmemdup_nul+0x24/0x80
              [<ffffffffa0d34253>] selinux_sb_eat_lsm_opts+0x293/0x560
              [<ffffffffa0d13f08>] security_sb_eat_lsm_opts+0x58/0x80
              [<ffffffffa0af1eb2>] generic_parse_monolithic+0x82/0x180
              [<ffffffffa0a9c1a5>] do_new_mount+0x1f5/0x550
              [<ffffffffa0a9eccb>] path_mount+0x2ab/0x1570
              [<ffffffffa0aa019e>] __x64_sys_mount+0x20e/0x280
              [<ffffffffa1f47124>] do_syscall_64+0x34/0x80
              [<ffffffffa200007e>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
      
          unreferenced object 0xffff888108e71640 (size 64):
            comm "fsmount", pid 7607, jiffies 4295044974 (age 1601.016s)
            hex dump (first 32 bytes):
              73 79 73 74 65 6d 5f 75 3a 6f 62 6a 65 63 74 5f  system_u:object_
              72 3a 74 65 73 74 5f 66 69 6c 65 73 79 73 74 65  r:test_filesyste
            backtrace:
              [<ffffffff861dc2b1>] memdup_user+0x21/0x90
              [<ffffffff861dc367>] strndup_user+0x47/0xa0
              [<ffffffff864f6965>] __do_sys_fsconfig+0x485/0x9f0
              [<ffffffff87940124>] do_syscall_64+0x34/0x80
              [<ffffffff87a0007e>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
      
      Cc: stable@vger.kernel.org
      Fixes: 70f4169a ("selinux: parse contexts for mount options early")
      Signed-off-by: default avatarChristian Göttsche <cgzones@googlemail.com>
      Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
      cad140d0
  3. 15 Jun, 2022 14 commits
  4. 14 Jun, 2022 1 commit
    • Linus Torvalds's avatar
      netfs: fix up netfs_inode_init() docbook comment · 018ab4fa
      Linus Torvalds authored
      Commit e81fb419 ("netfs: Further cleanups after struct netfs_inode
      wrapper introduced") changed the argument types and names, and actually
      updated the comment too (although that was thanks to David Howells, not
      me: my original patch only changed the code).
      
      But the comment fixup didn't go quite far enough, and didn't change the
      argument name in the comment, resulting in
      
        include/linux/netfs.h:314: warning: Function parameter or member 'ctx' not described in 'netfs_inode_init'
        include/linux/netfs.h:314: warning: Excess function parameter 'inode' description in 'netfs_inode_init'
      
      during htmldoc generation.
      
      Fixes: e81fb419 ("netfs: Further cleanups after struct netfs_inode wrapper introduced")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      018ab4fa