1. 09 May, 2024 2 commits
    • Baokun Li's avatar
      ext4: fix uninitialized ratelimit_state->lock access in __ext4_fill_super() · b4b4fda3
      Baokun Li authored
      In the following concurrency we will access the uninitialized rs->lock:
      
      ext4_fill_super
        ext4_register_sysfs
         // sysfs registered msg_ratelimit_interval_ms
                                   // Other processes modify rs->interval to
                                   // non-zero via msg_ratelimit_interval_ms
        ext4_orphan_cleanup
          ext4_msg(sb, KERN_INFO, "Errors on filesystem, "
            __ext4_msg
              ___ratelimit(&(EXT4_SB(sb)->s_msg_ratelimit_state)
                if (!rs->interval)  // do nothing if interval is 0
                  return 1;
                raw_spin_trylock_irqsave(&rs->lock, flags)
                  raw_spin_trylock(lock)
                    _raw_spin_trylock
                      __raw_spin_trylock
                        spin_acquire(&lock->dep_map, 0, 1, _RET_IP_)
                          lock_acquire
                            __lock_acquire
                              register_lock_class
                                assign_lock_key
                                  dump_stack();
        ratelimit_state_init(&sbi->s_msg_ratelimit_state, 5 * HZ, 10);
          raw_spin_lock_init(&rs->lock);
          // init rs->lock here
      
      and get the following dump_stack:
      
      =========================================================
      INFO: trying to register non-static key.
      The code is fine but needs lockdep annotation, or maybe
      you didn't initialize this object before use?
      turning off the locking correctness validator.
      CPU: 12 PID: 753 Comm: mount Tainted: G E 6.7.0-rc6-next-20231222 #504
      [...]
      Call Trace:
       dump_stack_lvl+0xc5/0x170
       dump_stack+0x18/0x30
       register_lock_class+0x740/0x7c0
       __lock_acquire+0x69/0x13a0
       lock_acquire+0x120/0x450
       _raw_spin_trylock+0x98/0xd0
       ___ratelimit+0xf6/0x220
       __ext4_msg+0x7f/0x160 [ext4]
       ext4_orphan_cleanup+0x665/0x740 [ext4]
       __ext4_fill_super+0x21ea/0x2b10 [ext4]
       ext4_fill_super+0x14d/0x360 [ext4]
      [...]
      =========================================================
      
      Normally interval is 0 until s_msg_ratelimit_state is initialized, so
      ___ratelimit() does nothing. But registering sysfs precedes initializing
      rs->lock, so it is possible to change rs->interval to a non-zero value
      via the msg_ratelimit_interval_ms interface of sysfs while rs->lock is
      uninitialized, and then a call to ext4_msg triggers the problem by
      accessing an uninitialized rs->lock. Therefore register sysfs after all
      initializations are complete to avoid such problems.
      Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Link: https://lore.kernel.org/r/20240102133730.1098120-1-libaokun1@huawei.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      b4b4fda3
    • Matthew Wilcox (Oracle)'s avatar
      ext4: remove calls to to set/clear the folio error flag · ea4fd933
      Matthew Wilcox (Oracle) authored
      Nobody checks this flag on ext4 folios, stop setting and clearing it.
      
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Andreas Dilger <adilger.kernel@dilger.ca>
      Cc: linux-ext4@vger.kernel.org
      Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Link: https://lore.kernel.org/r/20240420025029.2166544-11-willy@infradead.orgSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      ea4fd933
  2. 07 May, 2024 10 commits
  3. 03 May, 2024 18 commits
  4. 02 May, 2024 7 commits
  5. 14 Apr, 2024 3 commits
    • Linus Torvalds's avatar
      Linux 6.9-rc4 · 0bbac3fa
      Linus Torvalds authored
      0bbac3fa
    • Linus Torvalds's avatar
      Merge tag 'pull-sysfs-annotation-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 72374d71
      Linus Torvalds authored
      Pull sysfs fix from Al Viro:
       "Get rid of lockdep false positives around sysfs/overlayfs
      
        syzbot has uncovered a class of lockdep false positives for setups
        with sysfs being one of the backing layers in overlayfs. The root
        cause is that of->mutex allocated when opening a sysfs file read-only
        (which overlayfs might do) is confused with of->mutex of a file opened
        writable (held in write to sysfs file, which overlayfs won't do).
      
        Assigning them separate lockdep classes fixes that bunch and it's
        obviously safe"
      
      * tag 'pull-sysfs-annotation-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        kernfs: annotate different lockdep class for of->mutex of writable files
      72374d71
    • Linus Torvalds's avatar
      Merge tag 'x86-urgent-2024-04-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 27fd8085
      Linus Torvalds authored
      Pull misc x86 fixes from Ingo Molnar:
      
       - Follow up fixes for the BHI mitigations code
      
       - Fix !SPECULATION_MITIGATIONS bug not turning off mitigations as
         expected
      
       - Work around an APIC emulation bug when the kernel is built with Clang
         and run as a SEV guest
      
       - Follow up x86 topology fixes
      
      * tag 'x86-urgent-2024-04-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/cpu/amd: Move TOPOEXT enablement into the topology parser
        x86/cpu/amd: Make the NODEID_MSR union actually work
        x86/cpu/amd: Make the CPUID 0x80000008 parser correct
        x86/bugs: Replace CONFIG_SPECTRE_BHI_{ON,OFF} with CONFIG_MITIGATION_SPECTRE_BHI
        x86/bugs: Remove CONFIG_BHI_MITIGATION_AUTO and spectre_bhi=auto
        x86/bugs: Clarify that syscall hardening isn't a BHI mitigation
        x86/bugs: Fix BHI handling of RRSBA
        x86/bugs: Rename various 'ia32_cap' variables to 'x86_arch_cap_msr'
        x86/bugs: Cache the value of MSR_IA32_ARCH_CAPABILITIES
        x86/bugs: Fix BHI documentation
        x86/cpu: Actually turn off mitigations by default for SPECULATION_MITIGATIONS=n
        x86/topology: Don't update cpu_possible_map in topo_set_cpuids()
        x86/bugs: Fix return type of spectre_bhi_state()
        x86/apic: Force native_apic_mem_read() to use the MOV instruction
      27fd8085