1. 25 Oct, 2021 9 commits
    • Mark Rutland's avatar
      irq: nds32: avoid CONFIG_HANDLE_DOMAIN_IRQ · 6f877e13
      Mark Rutland authored
      In preparation for removing HANDLE_DOMAIN_IRQ, have arch/nds32 perform
      all the necessary IRQ entry accounting in its entry code.
      
      Currently arch/nds32 is tightly coupled with the ativic32 irqchip, and
      while the entry code should logically live under arch/nds32/, moving the
      entry logic there makes things more convoluted. So for now, place the
      entry logic in the ativic32 irqchip, but separated into a separate
      function to make the split of responsibility clear.
      
      In future this should probably use GENERIC_IRQ_MULTI_HANDLER to cleanly
      decouple this.
      
      There should be no functional change as a result of this patch.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: Greentime Hu <green.hu@gmail.com>
      Cc: Nick Hu <nickhu@andestech.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vincent Chen <deanbo422@gmail.com>
      6f877e13
    • Mark Rutland's avatar
      irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ · e54957fa
      Mark Rutland authored
      In preparation for removing HANDLE_DOMAIN_IRQ, have arch/arc perform all
      the necessary IRQ entry accounting in its entry code.
      
      There should be no functional change as a result of this patch.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vineet Gupta <vgupta@kernel.org>
      e54957fa
    • Mark Rutland's avatar
      irq: add generic_handle_arch_irq() · a1b09501
      Mark Rutland authored
      Several architectures select GENERIC_IRQ_MULTI_HANDLER and branch to
      handle_arch_irq() without performing any entry accounting.
      
      Add a generic wrapper to handle the common irqentry work when invoking
      handle_arch_irq(). Where an architecture needs to perform some entry
      accounting itself, it will need to invoke handle_arch_irq() itself.
      
      In subsequent patches it will become the responsibilty of the entry code
      to set the irq regs when entering an IRQ (rather than deferring this to
      an irqchip handler), so generic_handle_arch_irq() is made to set the irq
      regs now. This can be redundant in some cases, but is never harmful as
      saving/restoring the old regs nests safely.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Reviewed-by: default avatarGuo Ren <guoren@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      a1b09501
    • Mark Rutland's avatar
      irq: unexport handle_irq_desc() · 76adc5be
      Mark Rutland authored
      There are no modular users of handle_irq_desc(). Remove the export
      before we gain any.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Suggested-by: default avatarMarc Zyngier <maz@kernel.org>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      76adc5be
    • Mark Rutland's avatar
      irq: simplify handle_domain_{irq,nmi}() · d21e6402
      Mark Rutland authored
      There's no need for handle_domain_{irq,nmi}() to open-code the NULL
      check performed by handle_irq_desc(), nor the resolution of the desc
      performed by generic_handle_domain_irq().
      
      Use generic_handle_domain_irq() directly, as this is functioanlly
      equivalent and clearer. At the same time, delete the stale comments,
      which are no longer helpful.
      
      There should be no functional change as a result of this patch.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      d21e6402
    • Mark Rutland's avatar
      irq: mips: simplify do_domain_IRQ() · 4cb6f4df
      Mark Rutland authored
      There's no need fpr arch/mips's do_domain_IRQ() to open-code the NULL
      check performed by handle_irq_desc(), nor the resolution of the desc
      performed by generic_handle_domain_irq().
      
      Use generic_handle_domain_irq() directly, as this is functioanlly
      equivalent and clearer.
      
      There should be no functional change as a result of this patch.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      4cb6f4df
    • Mark Rutland's avatar
      irq: mips: stop (ab)using handle_domain_irq() · bab4ff1e
      Mark Rutland authored
      On MIPS, the only user of handle_domain_irq() is octeon_irq_ciu3_ip2(),
      which is called from the platform-specific plat_irq_dispatch() function
      invoked from the early assembly code.
      
      No other irqchip relevant to arch/mips uses handle_domain_irq():
      
      * No other plat_irq_dispatch() function transitively calls
        handle_domain_irq().
      
      * No other vectored IRQ dispatch function registered with
        set_vi_handler() calls handle_domain_irq().
      
      * No chained irqchip handlers call handle_domain_irq(), which makes
        sense as this is meant to only be used by root irqchip handlers.
      
      Currently octeon_irq_ciu3_ip2() passes NULL as the `regs` argument to
      handle_domain_irq(), and as handle_domain_irq() will pass this to
      set_irq_regs(), any invoked IRQ handlers will erroneously see a NULL
      pt_regs if they call get_pt_regs().
      
      Fix this by calling generic_handle_domain_irq() directly, and performing
      the necessary irq_{enter,exit}() logic directly in
      octeon_irq_ciu3_ip2(). At the same time, deselect HANDLE_DOMAIN_IRQ,
      which subsequent patches will remove.
      
      Other than the corrected behaviour of get_pt_regs(), there should be no
      functional change as a result of this patch.
      
      Fixes: ce210d35 ("MIPS: OCTEON: Add support for OCTEON III interrupt controller.")
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      bab4ff1e
    • Mark Rutland's avatar
      irq: mips: simplify bcm6345_l1_irq_handle() · 46b61c88
      Mark Rutland authored
      As bcm6345_l1_irq_handle() only needs to know /whether/ an IRQ was
      resolved, and doesn't need to know the specific IRQ, it's simpler for it
      to call generic_handle_domain_irq() directly and check the return code,
      so let's do that.
      
      There should be no functional change as a result of this patch.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Suggested-by: default avatarMarc Zyngier <maz@kernel.org>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      46b61c88
    • Mark Rutland's avatar
      irq: mips: avoid nested irq_enter() · c65b52d0
      Mark Rutland authored
      As bcm6345_l1_irq_handle() is a chained irqchip handler, it will be
      invoked within the context of the root irqchip handler, which must have
      entered IRQ context already.
      
      When bcm6345_l1_irq_handle() calls arch/mips's do_IRQ() , this will nest
      another call to irq_enter(), and the resulting nested increment to
      `rcu_data.dynticks_nmi_nesting` will cause rcu_is_cpu_rrupt_from_idle()
      to fail to identify wakeups from idle, resulting in failure to preempt,
      and RCU stalls.
      
      Chained irqchip handlers must invoke IRQ handlers by way of thee core
      irqchip code, i.e. generic_handle_irq() or generic_handle_domain_irq()
      and should not call do_IRQ(), which is intended only for root irqchip
      handlers.
      
      Fix bcm6345_l1_irq_handle() by calling generic_handle_irq() directly.
      
      Fixes: c7c42ec2 ("irqchips/bmips: Add bcm6345-l1 interrupt controller")
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
      Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      c65b52d0
  2. 03 Oct, 2021 12 commits
    • Linus Torvalds's avatar
      Linux 5.15-rc4 · 9e1ff307
      Linus Torvalds authored
      9e1ff307
    • Chen Jingwen's avatar
      elf: don't use MAP_FIXED_NOREPLACE for elf interpreter mappings · 9b2f72cc
      Chen Jingwen authored
      In commit b212921b ("elf: don't use MAP_FIXED_NOREPLACE for elf
      executable mappings") we still leave MAP_FIXED_NOREPLACE in place for
      load_elf_interp.
      
      Unfortunately, this will cause kernel to fail to start with:
      
          1 (init): Uhuuh, elf segment at 00003ffff7ffd000 requested but the memory is mapped already
          Failed to execute /init (error -17)
      
      The reason is that the elf interpreter (ld.so) has overlapping segments.
      
        readelf -l ld-2.31.so
        Program Headers:
          Type           Offset             VirtAddr           PhysAddr
                         FileSiz            MemSiz              Flags  Align
          LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                         0x000000000002c94c 0x000000000002c94c  R E    0x10000
          LOAD           0x000000000002dae0 0x000000000003dae0 0x000000000003dae0
                         0x00000000000021e8 0x0000000000002320  RW     0x10000
          LOAD           0x000000000002fe00 0x000000000003fe00 0x000000000003fe00
                         0x00000000000011ac 0x0000000000001328  RW     0x10000
      
      The reason for this problem is the same as described in commit
      ad55eac7 ("elf: enforce MAP_FIXED on overlaying elf segments").
      
      Not only executable binaries, elf interpreters (e.g. ld.so) can have
      overlapping elf segments, so we better drop MAP_FIXED_NOREPLACE and go
      back to MAP_FIXED in load_elf_interp.
      
      Fixes: 4ed28639 ("fs, elf: drop MAP_FIXED usage from elf_map")
      Cc: <stable@vger.kernel.org> # v4.19
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Michal Hocko <mhocko@suse.com>
      Signed-off-by: default avatarChen Jingwen <chenjingwen6@huawei.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9b2f72cc
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · ca3cef46
      Linus Torvalds authored
      Pull ext4 fixes from Ted Ts'o:
       "Fix a number of ext4 bugs in fast_commit, inline data, and delayed
        allocation.
      
        Also fix error handling code paths in ext4_dx_readdir() and
        ext4_fill_super().
      
        Finally, avoid a grabbing a journal head in the delayed allocation
        write in the common cases where we are overwriting a pre-existing
        block or appending to an inode"
      
      * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        ext4: recheck buffer uptodate bit under buffer lock
        ext4: fix potential infinite loop in ext4_dx_readdir()
        ext4: flush s_error_work before journal destroy in ext4_fill_super
        ext4: fix loff_t overflow in ext4_max_bitmap_size()
        ext4: fix reserved space counter leakage
        ext4: limit the number of blocks in one ADD_RANGE TLV
        ext4: enforce buffer head state assertion in ext4_da_map_blocks
        ext4: remove extent cache entries when truncating inline data
        ext4: drop unnecessary journal handle in delalloc write
        ext4: factor out write end code of inline file
        ext4: correct the error path of ext4_write_inline_data_end()
        ext4: check and update i_disksize properly
        ext4: add error checking to ext4_ext_replay_set_iblocks()
      ca3cef46
    • Linus Torvalds's avatar
      objtool: print out the symbol type when complaining about it · 7fab1c12
      Linus Torvalds authored
      The objtool warning that the kvm instruction emulation code triggered
      wasn't very useful:
      
          arch/x86/kvm/emulate.o: warning: objtool: __ex_table+0x4: don't know how to handle reloc symbol type: kvm_fastop_exception
      
      in that it helpfully tells you which symbol name it had trouble figuring
      out the relocation for, but it doesn't actually say what the unknown
      symbol type was that triggered it all.
      
      In this case it was because of missing type information (type 0, aka
      STT_NOTYPE), but on the whole it really should just have printed that
      out as part of the message.
      
      Because if this warning triggers, that's very much the first thing you
      want to know - why did reloc2sec_off() return failure for that symbol?
      
      So rather than just saying you can't handle some type of symbol without
      saying what the type _was_, just print out the type number too.
      
      Fixes: 24ff6525 ("objtool: Teach get_alt_entry() about more relocation types")
      Link: https://lore.kernel.org/lkml/CAHk-=wiZwq-0LknKhXN4M+T8jbxn_2i9mcKpO+OaBSSq_Eh7tg@mail.gmail.com/Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7fab1c12
    • Linus Torvalds's avatar
      kvm: fix objtool relocation warning · 291073a5
      Linus Torvalds authored
      The recent change to make objtool aware of more symbol relocation types
      (commit 24ff6525: "objtool: Teach get_alt_entry() about more
      relocation types") also added another check, and resulted in this
      objtool warning when building kvm on x86:
      
          arch/x86/kvm/emulate.o: warning: objtool: __ex_table+0x4: don't know how to handle reloc symbol type: kvm_fastop_exception
      
      The reason seems to be that kvm_fastop_exception() is marked as a global
      symbol, which causes the relocation to ke kept around for objtool.  And
      at the same time, the kvm_fastop_exception definition (which is done as
      an inline asm statement) doesn't actually set the type of the global,
      which then makes objtool unhappy.
      
      The minimal fix is to just not mark kvm_fastop_exception as being a
      global symbol.  It's only used in that one compilation unit anyway, so
      it was always pointless.  That's how all the other local exception table
      labels are done.
      
      I'm not entirely happy about the kinds of games that the kvm code plays
      with doing its own exception handling, and the fact that it confused
      objtool is most definitely a symptom of the code being a bit too subtle
      and ad-hoc.  But at least this trivial one-liner makes objtool no longer
      upset about what is going on.
      
      Fixes: 24ff6525 ("objtool: Teach get_alt_entry() about more relocation types")
      Link: https://lore.kernel.org/lkml/CAHk-=wiZwq-0LknKhXN4M+T8jbxn_2i9mcKpO+OaBSSq_Eh7tg@mail.gmail.com/
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Sean Christopherson <seanjc@google.com>
      Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
      Cc: Wanpeng Li <wanpengli@tencent.com>
      Cc: Jim Mattson <jmattson@google.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      291073a5
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 6761a0ae
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are some small misc driver fixes for 5.15-rc4. They are in two
        "groups":
      
         - ipack driver fixes for issues found by Johan Hovold
      
         - interconnect driver fixes for reported problems
      
        All of these have been in linux-next for a while with no reported
        issues"
      
      * tag 'char-misc-5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        ipack: ipoctal: fix module reference leak
        ipack: ipoctal: fix missing allocation-failure check
        ipack: ipoctal: fix tty-registration error handling
        ipack: ipoctal: fix tty registration race
        ipack: ipoctal: fix stack information leak
        interconnect: qcom: sdm660: Add missing a2noc qos clocks
        dt-bindings: interconnect: sdm660: Add missing a2noc qos clocks
        interconnect: qcom: sdm660: Correct NOC_QOS_PRIORITY shift and mask
        interconnect: qcom: sdm660: Fix id of slv_cnoc_mnoc_cfg
      6761a0ae
    • Linus Torvalds's avatar
      Merge tag 'driver-core-5.15-rc4' of... · 84928ce3
      Linus Torvalds authored
      Merge tag 'driver-core-5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core fixes from Greg KH:
       "Here are some driver core and kernfs fixes for reported issues for
        5.15-rc4. These fixes include:
      
         - kernfs positive dentry bugfix
      
         - debugfs_create_file_size error path fix
      
         - cpumask sysfs file bugfix to preserve the user/kernel abi (has been
           reported multiple times.)
      
         - devlink fixes for mdiobus devices as reported by the subsystem
           maintainers.
      
        Also included in here are some devlink debugging changes to make it
        easier for people to report problems when asked. They have already
        helped with the mdiobus and other subsystems reporting issues.
      
        All of these have been linux-next for a while with no reported issues"
      
      * tag 'driver-core-5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        kernfs: also call kernfs_set_rev() for positive dentry
        driver core: Add debug logs when fwnode links are added/deleted
        driver core: Create __fwnode_link_del() helper function
        driver core: Set deferred probe reason when deferred by driver core
        net: mdiobus: Set FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD for mdiobus parents
        driver core: fw_devlink: Add support for FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD
        driver core: fw_devlink: Improve handling of cyclic dependencies
        cpumask: Omit terminating null byte in cpumap_print_{list,bitmask}_to_buf
        debugfs: debugfs_create_file_size(): use IS_ERR to check for error
      84928ce3
    • Linus Torvalds's avatar
      Merge tag 'sched_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 777feaba
      Linus Torvalds authored
      Pull scheduler fixes from Borislav Petkov:
      
       - Tell the compiler to always inline is_percpu_thread()
      
       - Make sure tunable_scaling buffer is null-terminated after an update
         in sysfs
      
       - Fix LTP named regression due to cgroup list ordering
      
      * tag 'sched_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched: Always inline is_percpu_thread()
        sched/fair: Null terminate buffer when updating tunable_scaling
        sched/fair: Add ancestors of unthrottled undecayed cfs_rq
      777feaba
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3a399a2b
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Make sure the destroy callback is reset when a event initialization
         fails
      
       - Update the event constraints for Icelake
      
       - Make sure the active time of an event is updated even for inactive
         events
      
      * tag 'perf_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/core: fix userpage->time_enabled of inactive events
        perf/x86/intel: Update event constraints for ICX
        perf/x86: Reset destroy callback on event init failure
      3a399a2b
    • Linus Torvalds's avatar
      Merge tag 'objtool_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 52c3c170
      Linus Torvalds authored
      Pull objtool fix from Borislav Petkov:
      
       - Handle symbol relocations properly due to changes in the toolchains
         which remove section symbols now
      
      * tag 'objtool_urgent_for_v5.15_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Teach get_alt_entry() about more relocation types
      52c3c170
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.15-rc4' of... · 7b66f439
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - Fixed various potential NULL pointer accesses in w8379* drivers
      
       - Improved error handling, fault reporting, and fixed rounding in
         thmp421 driver
      
       - Fixed error handling in ltc2947 driver
      
       - Added missing attribute to pmbus/mp2975 driver
      
       - Fixed attribute values in pbus/ibm-cffps, occ, and mlxreg-fan
         drivers
      
       - Removed unused residual code from k10temp driver
      
      * tag 'hwmon-for-v5.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (w83793) Fix NULL pointer dereference by removing unnecessary structure field
        hwmon: (w83792d) Fix NULL pointer dereference by removing unnecessary structure field
        hwmon: (w83791d) Fix NULL pointer dereference by removing unnecessary structure field
        hwmon: (pmbus/mp2975) Add missed POUT attribute for page 1 mp2975 controller
        hwmon: (pmbus/ibm-cffps) max_power_out swap changes
        hwmon: (occ) Fix P10 VRM temp sensors
        hwmon: (ltc2947) Properly handle errors when looking for the external clock
        hwmon: (tmp421) fix rounding for negative values
        hwmon: (tmp421) report /PVLD condition as fault
        hwmon: (tmp421) handle I2C errors
        hwmon: (mlxreg-fan) Return non-zero value when fan current state is enforced from sysfs
        hwmon: (k10temp) Remove residues of current and voltage
      7b66f439
    • Linus Torvalds's avatar
      Merge tag '5.15-rc3-ksmbd-fixes' of git://git.samba.org/ksmbd · e25ca045
      Linus Torvalds authored
      Pull ksmbd server fixes from Steve French:
       "Eleven fixes for the ksmbd kernel server, mostly security related:
      
         - an important fix for disabling weak NTLMv1 authentication
      
         - seven security (improved buffer overflow checks) fixes
      
         - fix for wrong infolevel struct used in some getattr/setattr paths
      
         - two small documentation fixes"
      
      * tag '5.15-rc3-ksmbd-fixes' of git://git.samba.org/ksmbd:
        ksmbd: missing check for NULL in convert_to_nt_pathname()
        ksmbd: fix transform header validation
        ksmbd: add buffer validation for SMB2_CREATE_CONTEXT
        ksmbd: add validation in smb2 negotiate
        ksmbd: add request buffer validation in smb2_set_info
        ksmbd: use correct basic info level in set_file_basic_info()
        ksmbd: remove NTLMv1 authentication
        ksmbd: fix documentation for 2 functions
        MAINTAINERS: rename cifs_common to smbfs_common in cifs and ksmbd entry
        ksmbd: fix invalid request buffer access in compound
        ksmbd: remove RFC1002 check in smb2 request
      e25ca045
  3. 02 Oct, 2021 12 commits
  4. 01 Oct, 2021 7 commits