Ingo Molnar [Thu, 13 Jan 2022 08:17:50 +0000 (09:17 +0100)]
Merge branch into tip/master: 'x86/core'
* x86/core:
9cdbeec40968 x86/entry_32: Fix segment exceptions
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Peter Zijlstra [Tue, 11 Jan 2022 11:11:14 +0000 (12:11 +0100)]
x86/entry_32: Fix segment exceptions
The LKP robot reported that commit in Fixes: caused a failure. Turns out
the ldt_gdt_32 selftest turns into an infinite loop trying to clear the
segment.
As discovered by Sean, what happens is that PARANOID_EXIT_TO_KERNEL_MODE
in the handle_exception_return path overwrites the entry stack data with
the task stack data, restoring the "bad" segment value.
Instead of having the exception retry the instruction, have it emulate
the full instruction. Replace EX_TYPE_POP_ZERO with EX_TYPE_POP_REG
which will do the equivalent of: POP %reg; MOV $imm, %reg.
In order to encode the segment registers, add them as registers 8-11 for
32-bit.
By setting regs->[defg]s the (nested) RESTORE_REGS will pop this value
at the end of the exception handler and by increasing regs->sp, it will
have skipped the stack slot.
This was debugged by Sean Christopherson <seanjc@google.com>.
[ bp: Add EX_REG_GS too. ]
Fixes:
aa93e2ad7464 ("x86/entry_32: Remove .fixup usage")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/Yd1l0gInc4zRcnt/@hirez.programming.kicks-ass.net
Ingo Molnar [Wed, 12 Jan 2022 08:55:35 +0000 (09:55 +0100)]
Merge branch into tip/master: 'irq/core'
* irq/core:
67d50b5f9114 Merge tag 'irqchip-5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/core
cd448b24c621 Merge branch irq/misc-5.17 into irq/irqchip-next
31bd548f40cd irqchip/renesas-intc-irqpin: Use platform_get_irq_optional() to get the interrupt
befbfe6f8f74 irqchip/renesas-irqc: Use platform_get_irq_optional() to get the interrupt
79a7f77b9b15 irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time
0859bbb07d06 irqchip/ingenic-tcu: Use correctly sized arguments for bit field
c10f2f8b5d80 irqchip/gic-v2m: Add const to of_device_id
29e525cc825e irqchip/imx-gpcv2: Mark imx_gpcv2_instance with __ro_after_init
f63c862587c9 irqchip/spear-shirq: Add support for IRQ 0..6
16e3613a39fd Merge branch irq/its-kexec-rt into irq/irqchip-next
835f442fdbce irqchip/gic-v3-its: Limit memreserve cpuhp state lifetime
d23bc2bc1d63 irqchip/gic-v3-its: Postpone LPI pending table freeing and memreserve
c0cdc89072a3 irqchip/gic-v3-its: Give the percpu rdist struct its own flags field
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Wed, 12 Jan 2022 08:55:35 +0000 (09:55 +0100)]
Merge branch into tip/master: 'irq/msi'
* irq/msi:
74a5257a0c17 genirq/msi: Populate sysfs entry only once
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Wed, 12 Jan 2022 08:55:34 +0000 (09:55 +0100)]
Merge branch into tip/master: 'timers/core'
* timers/core:
35e13e9da9af Merge branch 'clocksource' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into timers/core
6629c0769926 Merge tag 'timers-v5.17-rc1' of https://git.linaro.org/people/daniel.lezcano/linux into timers/core
7647204c2e81 dt-bindings: timer: Add Mstar MSC313e timer devicetree bindings documentation
e64da64f410c clocksource/drivers/msc313e: Add support for ssd20xd-based platforms
5fc1f93f6998 clocksource/drivers: Add MStar MSC313e timer support
0642fb4ba68f clocksource/drivers/pistachio: Fix -Wunused-but-set-variable warning
0ed9e4ebcebc clocksource/drivers/timer-imx-sysctr: Set cpumask to cpu_possible_mask
f5bd5fc9d478 clocksource/drivers/imx-sysctr: Mark two variable with __ro_after_init
a2807f657976 clocksource/drivers/renesas,ostm: Make RENESAS_OSTM symbol visible
3a3e9f23c2ca clocksource/drivers/renesas-ostm: Add RZ/G2L OSTM support
92d06a3f67ad dt-bindings: timer: renesas: ostm: Document Renesas RZ/G2L OSTM
863298738076 Merge branch 'reset/of-get-optional-exclusive' of git://git.pengutronix.de/pza/linux into timers/drivers/next
410fbda49cc9 clocksource/drivers/exynos_mct: Fix silly typo resulting in checkpatch warning
1a5620671a1b clocksource: Reduce the default clocksource_watchdog() retries to 2
c86ff8c55b8a clocksource: Avoid accidental unstable marking of clocksources
8c0abfd6d2f6 rcutorture: Add CONFIG_PREEMPT_DYNAMIC=n to tiny scenarios
453e2cadc97c dt-bindings: timer: tpm-timer: Add imx8ulp compatible string
c4f5b30dda01 reset: Add of_reset_control_get_optional_exclusive()
7cd925a8823d clocksource/drivers/exynos_mct: Refactor resources allocation
ad253b3dd798 dt-bindings: timer: remove rockchip,rk3066-timer compatible string from rockchip,rk-timer.yaml
557804a81d25 dt-bindings: timer: cadence_ttc: Add power-domains
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Thomas Gleixner [Mon, 10 Jan 2022 18:12:45 +0000 (19:12 +0100)]
genirq/msi: Populate sysfs entry only once
The MSI entries for multi-MSI are populated en bloc for the MSI descriptor,
but the current code invokes the population inside the per interrupt loop
which triggers a warning in the sysfs code and causes the interrupt
allocation to fail.
Move it outside of the loop so it works correctly for single and multi-MSI.
Fixes:
bf5e758f02fc ("genirq/msi: Simplify sysfs handling")
Reported-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/87leznqx2a.ffs@tglx
Thomas Gleixner [Mon, 10 Jan 2022 12:57:17 +0000 (13:57 +0100)]
Merge branch 'clocksource' of git://git./linux/kernel/git/paulmck/linux-rcu into timers/core
Pull clocksource watchdog updates from Paul McKenney:
- Avoid accidental unstable marking of clocksources by rejecting
clocksource measurements where the source of the skew is the delay
reading reference clocksource itself. This change avoids many of the
current false positives caused by epic cache-thrashing workloads.
- Reduce the default clocksource_watchdog() retries to 2, thus offsetting
the increased overhead due to #1 above rereading the reference
clocksource.
Link: https://lore.kernel.org/lkml/20220105001723.GA536708@paulmck-ThinkPad-P17-Gen-1
Thomas Gleixner [Mon, 10 Jan 2022 12:55:41 +0000 (13:55 +0100)]
Merge tag 'irqchip-5.17' of git://git./linux/kernel/git/maz/arm-platforms into irq/core
Pull irqchip updates from Marc Zyngier:
- Fix GICv3 redistributor table reservation with RT across kexec
- Fix GICv4.1 redistributor view of the VPE table across kexec
- Add support for extra interrupts on spear-shirq
- Make obtaining some interrupts optional for the Renesas drivers
- Various cleanups and bug fixes
Link: https://lore.kernel.org/lkml/20220108130807.4109738-1-maz@kernel.org
Thomas Gleixner [Mon, 10 Jan 2022 12:53:16 +0000 (13:53 +0100)]
Merge tag 'timers-v5.17-rc1' of https://git.linaro.org/people/daniel.lezcano/linux into timers/core
Pull clocksource/events updates from Daniel Lezcano:
- Refactor resource allocation on the Exynos_mct driver without
functional changes (Marek Szyprowski)
- Add imx8ulp compatible string for NPX TPM driver (Jacky Bai)
- Fix comma introduced by error by replacing it by the initial
semicolon on the Exynos_mct (Will Deacon)
- Add OSTM driver support on Renesas. The reset line must be
deasserted before accessing the registers. This change depends on an
external change resulting in a shared immutable branch
'reset/of-get-optional-exclusive' from
git://git.pengutronix.de/pza/linux (Biju Das)
- Make the OSTM Kconfig option visible to user in order to let him
disable it when ARM architected timers is enabled (Biju Das)
- Tag two variables on iMX sysctr _ro_afterinit (Peng Fan)
- Set the cpumask to cpu_possible_mask in order to have full benefit
of the DYNIRQ flag on iMX sysctr (Peng Fan)
- Tag __maybe_unused a variable in the Pistachio timer driver in order
to fix a warning reported by the kernel test robot (Drew Fustini)
- Add MStar MSC313e timer support and the ssd20xd-based variant, as
well as the DT bindings (Romain Perier)
- Remove the incompatible compatible string for the rk3066 (Johan
Jonker)
- Fix dts_check warnings on the cadence ttc driver by adding the power
domain bindings (Michal Simek)
Link: https://lore.kernel.org/lkml/e093c706-c98d-29ee-0102-78b6d41c6164@linaro.org
Ingo Molnar [Sat, 8 Jan 2022 21:55:37 +0000 (22:55 +0100)]
Merge branch into tip/master: 'x86/build'
* x86/build:
b6aa86cff44c x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Wed, 5 Jan 2022 00:35:58 +0000 (01:35 +0100)]
x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs
Most distro kernels have this option enabled, to improve debug output.
Lockdep also selects it.
Enable this in the defconfig kernel as well, to make it more
representative of what people are using on x86.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/YdTn7gssoMVDMgMw@gmail.com
Ingo Molnar [Sat, 8 Jan 2022 10:03:32 +0000 (11:03 +0100)]
Merge branch into tip/master: 'core/core'
* core/core:
5abb065dca73 notifier: Return an error when a callback has already been registered
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:32 +0000 (11:03 +0100)]
Merge branch into tip/master: 'core/entry'
* core/entry:
985faa78687d powerpc: Snapshot thread flags
08b0af5b2aff powerpc: Avoid discarding flags in system_call_exception()
4ea7ce0a79b9 openrisc: Snapshot thread flags
e538c5849143 microblaze: Snapshot thread flags
342b38087865 arm64: Snapshot thread flags
050e22bfc4f4 ARM: Snapshot thread flags
7fb2b24bb5c5 alpha: Snapshot thread flags
0569b245132c sched: Snapshot thread flags
6ce895128b3b entry: Snapshot thread flags
dca99fb643a2 x86: Snapshot thread flags
7ad639840acf thread_info: Add helpers to snapshot thread flags
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:31 +0000 (11:03 +0100)]
Merge branch into tip/master: 'irq/core'
* irq/core:
0422fe2666ae Merge branch 'linus' into irq/core, to fix conflict
4b3ddc6462e8 net/mlx4: Use irq_update_affinity_hint()
7451e9ea8e20 net/mlx5: Use irq_set_affinity_and_hint()
2d1e72f235d6 hinic: Use irq_set_affinity_and_hint()
ce5a58a96ccc scsi: lpfc: Use irq_set_affinity()
bf886e1ef11a mailbox: Use irq_update_affinity_hint()
cc493264c01d ixgbe: Use irq_update_affinity_hint()
b8b9dd525203 be2net: Use irq_update_affinity_hint()
cb39ca92eb74 enic: Use irq_update_affinity_hint()
fb5bd854710e RDMA/irdma: Use irq_update_affinity_hint()
fdb8ed13a772 scsi: mpt3sas: Use irq_set_affinity_and_hint()
8049da6f3943 scsi: megaraid_sas: Use irq_set_affinity_and_hint()
d34c54d1739c i40e: Use irq_update_affinity_hint()
0f9744f4ed53 iavf: Use irq_update_affinity_hint()
65c7cdedeb30 genirq: Provide new interfaces for affinity hints
4946f15e8c33 genirq/generic_chip: Constify irq_generic_chip_ops
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:31 +0000 (11:03 +0100)]
Merge branch into tip/master: 'irq/msi'
* irq/msi:
d558285413ea PCI/MSI: Unbreak pci_irq_get_affinity()
cd6cf06590b9 genirq/msi: Convert storage to xarray
bf5e758f02fc genirq/msi: Simplify sysfs handling
ef3350c53d2a genirq/msi: Add abuse prevention comment to msi header
cc9a246dbf6b genirq/msi: Mop up old interfaces
495c66aca3da genirq/msi: Convert to new functions
ef8dd01538ea genirq/msi: Make interrupt allocation less convoluted
a80713fea3d1 platform-msi: Simplify platform device MSI code
653b50c5f969 platform-msi: Let core code handle MSI descriptors
e8604b1447b4 bus: fsl-mc-msi: Simplify MSI descriptor handling
7ad321a5eadb soc: ti: ti_sci_inta_msi: Remove ti_sci_inta_msi_domain_free_irqs()
49fbfdc22250 soc: ti: ti_sci_inta_msi: Rework MSI descriptor allocation
68e3183580be NTB/msi: Convert to msi_on_each_desc()
dc2b453290c4 PCI: hv: Rework MSI handling
706b585a1b95 powerpc/mpic_u3msi: Use msi_for_each-desc()
ab430e743778 powerpc/fsl_msi: Use msi_for_each_desc()
e22b0d1bbf5b powerpc/pasemi/msi: Convert to msi_on_each_dec()
3c46658bd703 powerpc/cell/axon_msi: Convert to msi_on_each_desc()
85dabc2f72b6 powerpc/4xx/hsta: Rework MSI handling
2ca5e908d0f4 s390/pci: Rework MSI descriptor walk
3d31bbd39aa5 xen/pcifront: Rework MSI handling
f2948df5f87a x86/pci/xen: Use msi_for_each_desc()
ae24e28fef14 PCI/MSI: Use msi_on_each_desc()
9fb9eb4b59ac PCI/MSI: Let core code free MSI descriptors
71020a3c0dff PCI/MSI: Use msi_add_msi_desc()
5512c5eaf533 PCI/MSI: Protect MSI operations
645474e2cee4 genirq/msi: Provide domain flags to allocate/free MSI descriptors automatically
602905253607 genirq/msi: Provide msi_alloc_msi_desc() and a simple allocator
1046f71d7268 genirq/msi: Provide a set of advanced MSI accessors and iterators
0f62d941acf9 genirq/msi: Provide msi_domain_alloc/free_irqs_descs_locked()
b5f687f97d1e genirq/msi: Add mutex for MSI list protection
125282cd4f33 genirq/msi: Move descriptor list to struct msi_device_data
1900c962e2dc dmaengine: qcom_hidma: Cleanup MSI handling
89e0032ec201 soc: ti: ti_sci_inta_msi: Get rid of ti_sci_inta_msi_get_virq()
d86a6d47bcc6 bus: fsl-mc: fsl-mc-allocator: Rework MSI handling
d722e9a51178 mailbox: bcm-flexrm-mailbox: Rework MSI interrupt handling
065afdc9c521 iommu/arm-smmu-v3: Use msi_get_virq()
848456705565 perf/smmuv3: Use msi_get_virq()
f6632bb2c145 dmaengine: mv_xor_v2: Get rid of msi_desc abuse
f48235900182 PCI/MSI: Simplify pci_irq_get_affinity()
82ff8e6b78fc PCI/MSI: Use msi_get_virq() in pci_get_vector()
cf15f43acaad genirq/msi: Provide interface to retrieve Linux interrupt number
651b39c48813 powerpc/pseries/msi: Let core code check for contiguous entries
7a823443e9b4 PCI/MSI: Provide MSI_FLAG_MSIX_CONTIGUOUS
173ffad79d17 PCI/MSI: Use msi_desc::msi_index
0f18095871fc soc: ti: ti_sci_inta_msi: Use msi_desc::msi_index
78ee9fb4b8b1 bus: fsl-mc-msi: Use msi_desc::msi_index
dba27c7fa36f platform-msi: Use msi_desc::msi_index
20c6d424cfe6 genirq/msi: Consolidate MSI descriptor data
fc22e7dbcdb3 platform-msi: Store platform private data pointer in msi_device_data
9835cec6d557 platform-msi: Rename functions and clarify comments
24cff375fdb6 genirq/msi: Remove the original sysfs interfaces
25ce693ef7ea platform-msi: Let the core code handle sysfs groups
ffd84485e6be PCI/MSI: Let the irq code handle sysfs groups
bf6e054e0e3f genirq/msi: Provide msi_device_populate/destroy_sysfs()
686073e9f846 soc: ti: ti_sci_inta_msi: Allocate MSI device data on first use
86ca622628d3 bus: fsl-mc-msi: Allocate MSI device data on first use
077aeadb6cac platform-msi: Allocate MSI device data on first use
93296cd1325d PCI/MSI: Allocate MSI device data on first use
3f35d2cf9fbc PCI/MSI: Decouple MSI[-X] disable from pcim_release()
013bd8e543c2 device: Add device:: Msi_data pointer and struct msi_device_data
34fff62827b2 device: Move MSI related data into a struct
ed1533b58101 powerpc/pseries/msi: Use PCI device properties
d8a530578b16 powerpc/cell/axon_msi: Use PCI device property
6ef7f771de01 genirq/msi: Use PCI device property
b3f82364117a x86/apic/msi: Use PCI device MSI property
0bcfade92080 x86/pci/XEN: Use PCI device property
c7ecb95ca6a8 PCI/MSI: Set pci_dev::msi[x]_enabled early
91f7d2dbf952 x86/xen: Use correct #ifdef guard for xen_initdom_restore_msi()
09eb3ad55fef Merge branch 'irq/urgent' into irq/msi
60bf9b33c82c PCI/MSI: Move descriptor counting on allocation fail to the legacy code
890337624e1f genirq/msi: Handle PCI/MSI allocation fail in core code
57ce3a3c99b2 PCI/MSI: Make pci_msi_domain_check_cap() static
cd119b09a87d PCI/MSI: Move msi_lock to struct pci_dev
85aa607e79f8 PCI/MSI: Sanitize MSI-X table map handling
aa423ac4221a PCI/MSI: Split out irqdomain code
a01e09ef1237 PCI/MSI: Split out !IRQDOMAIN code
54324c2f3d72 PCI/MSI: Split out CONFIG_PCI_MSI independent part
288c81ce4be7 PCI/MSI: Move code into a separate directory
7112158d97a1 PCI/MSI: Make msix_update_entries() smarter
29a03ada4a00 PCI/MSI: Cleanup include zoo
ae72f3156729 PCI/MSI: Make arch_restore_msi_irqs() less horrible.
1982afd6c058 x86/hyperv: Refactor hv_msi_domain_free_irqs()
e58f2259b91c genirq/msi, treewide: Use a named struct for PCI/MSI attributes
bec61847cdc7 MIPS: Octeon: Use arch_setup_msi_irq()
793c5006769d PCI/sysfs: Use pci_irq_vector()
ade044a3d0f0 PCI/MSI: Remove msi_desc_to_pci_sysdata()
9e8688c5f299 PCI/MSI: Make pci_msi_domain_write_msg() static
3ba1f050c91d genirq/msi: Fixup includes
1dd2c6a0817f genirq/msi: Remove unused domain callbacks
1197528aaea7 genirq/msi: Guard sysfs code
29bbc35e29d9 PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity()
eca213152a36 powerpc/4xx: Complete removal of MSI support
4f1d038b5ea1 powerpc/4xx: Remove MSI support which never worked
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:30 +0000 (11:03 +0100)]
Merge branch into tip/master: 'locking/core'
* locking/core:
f16cc980d649 Merge branch 'locking/urgent' into locking/core
5fb6e8cf53b0 locking/atomic: atomic64: Remove unusable atomic ops
6773cc31a9bb Merge tag 'v5.16-rc5' into locking/core, to pick up fixes
0f09c2746985 futex: Fix additional regressions
77993b595ada locking: Allow to include asm/spinlock_types.h from linux/spinlock_types_raw.h
0cf292b569bc x86/mm: Include spinlock_t definition in pgtable.
4cf75fd4a254 locking: Mark racy reads of owner->on_cpu
c0bed69daf4b locking: Make owner_on_cpu() into <linux/sched.h>
9a75bd0c52df lockdep/selftests: Adapt ww-tests for PREEMPT_RT
a529f8db8976 lockdep/selftests: Skip the softirq related tests on PREEMPT_RT
512bf713cb4c lockdep/selftests: Unbalanced migrate_disable() & rcu_read_lock().
fc78dd08e640 lockdep/selftests: Avoid using local_lock_{acquire|release}().
0c1d7a2c2d32 lockdep: Remove softirq accounting on PREEMPT_RT.
a3642021923b locking/rtmutex: Add rt_mutex_lock_nest_lock() and rt_mutex_lock_killable().
02ea9fc96fe9 locking/rtmutex: Squash self-deadlock check for ww_rt_mutex.
e08f343be00c locking: Remove rt_rwlock_is_contended().
9d0df3779745 sched: Trigger warning if ->migration_disabled counter underflows.
4e0d84634445 futex: Fix sparc32/m68k/nds32 build regression
3297481d688a futex: Remove futex_cmpxchg detection
3f2bedabb62c futex: Ensure futex_atomic_cmpxchg_inatomic() is present
2202e15b2b1a kernel/locking: Use a pointer in ww_mutex_trylock().
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:30 +0000 (11:03 +0100)]
Merge branch into tip/master: 'perf/core'
* perf/core:
a9f4a6e92b3b perf: Drop guest callback (un)register stubs
17ed14eba22b KVM: arm64: Drop perf.c and fold its tiny bits of code into arm.c
be399d824b43 KVM: arm64: Hide kvm_arm_pmu_available behind CONFIG_HW_PERF_EVENTS=y
7b517831a1c6 KVM: arm64: Convert to the generic perf callbacks
33271a9e2b52 KVM: x86: Move Intel Processor Trace interrupt handler to vmx.c
e1bfc24577cc KVM: Move x86's perf guest info callbacks to generic KVM
db215756ae59 KVM: x86: More precisely identify NMI from guest when handling PMI
73cd107b9685 KVM: x86: Drop current_vcpu for kvm_running_vcpu + kvm_arch_vcpu variable
87b940a0675e perf/core: Use static_call to optimize perf_guest_info_callbacks
2aef6f306b39 perf: Force architectures to opt-in to guest callbacks
1c3430516b07 perf: Add wrappers for invoking guest callbacks
b9f5621c9547 perf/core: Rework guest callbacks to prepare for static_call support
84af21d850ee perf: Drop dead and useless guest "support" from arm, csky, nds32 and riscv
2934e3d09350 perf: Stop pretending that perf can handle multiple guest callbacks
f4b027c5c819 KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest
5c7df80e2ce4 KVM: x86: Register perf callbacks after calling vendor's hardware_setup()
ff083a2d972f perf: Protect perf_guest_cbs with RCU
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:29 +0000 (11:03 +0100)]
Merge branch into tip/master: 'ras/core'
* ras/core:
3376136300a0 x86/mce: Reduce number of machine checks taken during recovery
de768416b203 x86/mce/inject: Avoid out-of-bounds write when setting flags
91f75eb481cf x86/MCE/AMD, EDAC/mce_amd: Support non-uniform MCA bank type enumeration
5176a93ab27a x86/MCE/AMD, EDAC/mce_amd: Add new SMCA bank types
1acd85feba81 x86/mce: Check regs before accessing it
e3d72e8eee53 x86/mce: Mark mce_start() noinstr
edb3d07e2403 x86/mce: Mark mce_timed_out() noinstr
75581a203e63 x86/mce: Move the tainting outside of the noinstr region
db6c996d6ce4 x86/mce: Mark mce_read_aux() noinstr
b4813539d37f x86/mce: Mark mce_end() noinstr
3c7ce80a818f x86/mce: Mark mce_panic() noinstr
0a5b288e85bb x86/mce: Prevent severity computation from being instrumented
4fbce464db81 x86/mce: Allow instrumentation during task work queueing
487d654db3ed x86/mce: Remove noinstr annotation from mce_setup()
88f66a423537 x86/mce: Use mce_rdmsrl() in severity checking code
ad669ec16afe x86/mce: Remove function-local cpus variables
cd5e0d1fc93a x86/mce: Do not use memset to clear the banks bitmaps
1e56279a4916 x86/mce/inject: Set the valid bit in MCA_STATUS before error injection
e48d008bd13e x86/mce/inject: Check if a bank is populated before injecting
2322b532ad90 x86/mce: Get rid of cpu_missing
70aeb807cf86 EDAC/amd64: Add context struct
448c3d6085b7 EDAC/amd64: Allow for DF Indirect Broadcast reads
b3218ae47771 x86/amd_nb, EDAC/amd64: Move DF Indirect Read to AMD64 EDAC
0b746e8c1e1e x86/MCE/AMD, EDAC/amd64: Move address translation to AMD64 EDAC
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:28 +0000 (11:03 +0100)]
Merge branch into tip/master: 'sched/core'
* sched/core:
82762d2af31a sched/fair: Replace CFS internal cpu_util() with cpu_util_cfs()
ef8df9798d46 sched/fair: Cleanup task_util and capacity type
9b58e976b3b3 sched/rt: Try to restart rt period timer when rt runtime exceeded
2917406c3527 sched/fair: Document the slow path and fast path in select_task_rq_fair
014ba44e8184 sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity
8b4e74ccb582 sched/fair: Fix detection of per-CPU kthreads waking a task
8c92606ab810 sched/cpuacct: Make user/system times in cpuacct.stat more precise
dd02d4234c9a sched/cpuacct: Fix user/system in shown cpuacct.usage*
c7ccbf4b6174 cpuacct: Convert BUG_ON() to WARN_ON_ONCE()
9731698ecb9c cputime, cpuacct: Include guest time in user time in cpuacct.stat
cb0e52b77487 psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim
4feee7d12603 sched/core: Forced idle accounting
2fb75e1b642f psi: Add a missing SPDX license header
2d3791f116bb psi: Remove repeated verbose comment
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:28 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/build'
* x86/build:
ff936357b496 x86/defconfig: Enable CONFIG_LOCALVERSION_AUTO=y in the defconfig
5fe392ff9d1f x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:28 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/cache'
* x86/cache:
df0114f1f871 x86/resctrl: Remove redundant assignment to variable chunks
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:27 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/cleanups'
* x86/cleanups:
0be4838f018c x86/events/amd/iommu: Remove redundant assignment to variable shift
bc7aaf52f963 x86/boot/string: Add missing function prototypes
20735d24adfe x86/fpu: Remove duplicate copy_fpstate_to_sigframe() prototype
61646ca83d38 x86/uaccess: Move variable into switch case statement
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:27 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/core'
* x86/core:
82a8954acd93 objtool: Remove .fixup handling
e5eefda5aa51 x86: Remove .fixup section
b77607802573 x86/word-at-a-time: Remove .fixup usage
d5d797dcbd78 x86/usercopy: Remove .fixup usage
13e4bf1bddcb x86/usercopy_32: Simplify __copy_user_intel_nocache()
5ce8e39f5552 x86/sgx: Remove .fixup usage
fedb24cda1ca x86/checksum_32: Remove .fixup usage
3e8ea7803a1d x86/vmx: Remove .fixup usage
c9a34c3f4ece x86/kvm: Remove .fixup usage
5fc77b916cb8 x86/segment: Remove .fixup usage
1c3b9091d084 x86/fpu: Remove .fixup usage
e2b48e43284c x86/xen: Remove .fixup usage
99641e094d6c x86/uaccess: Remove .fixup usage
4c132d1d844a x86/futex: Remove .fixup usage
d52a7344bdfa x86/msr: Remove .fixup usage
4b5305decc84 x86/extable: Extend extable functionality
aa93e2ad7464 x86/entry_32: Remove .fixup usage
16e617d05ef0 x86/entry_64: Remove .fixup usage
ab0fedcc714a x86/copy_mc_64: Remove .fixup usage
acba44d2436d x86/copy_user_64: Remove .fixup usage
c6dbd3e5e69c x86/mmx_32: Remove X86_USE_3DNOW
bff8c3848e07 bitfield.h: Fix "type of reg too small for mask" test
e463a09af2f0 x86: Add straight-line-speculation mitigation
26c44b776dba x86/alternative: Relax text_poke_bp() constraint
1cc1e4c8aab4 objtool: Add straight-line-speculation validation
b17c2baa305c x86: Prepare inline-asm for straight-line-speculation
f94909ceb1ed x86: Prepare asm files for straight-line-speculation
22da5a07c75e x86/lib/atomic64_386_32: Rename things
68cf4f2a72ef x86: Use -mindirect-branch-cs-prefix for RETPOLINE builds
b2f825bfeda8 x86: Move RETPOLINE*_CFLAGS to arch Makefile
3411506550b1 x86/csum: Rewrite/optimize csum_partial()
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:26 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/cpu'
* x86/cpu:
244122b4d2e5 x86/lib: Add fast-short-rep-movs check to copy_user_enhanced_fast_string()
9c7e2634f647 x86/cpu: Don't write CSTAR MSR on Intel CPUs
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:25 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/fpu'
* x86/fpu:
0fe4ff885f8a x86/fpu: Correct AVX512 state tracking
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:25 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/misc'
* x86/misc:
4d5cff69fbdd x86/mtrr: Remove the mtrr_bp_init() stub
c494eb366dbf x86/sev-es: Use insn_decode_mmio() for MMIO implementation
70a81f99e45b x86/insn-eval: Introduce insn_decode_mmio()
d5ec1877df6d x86/insn-eval: Introduce insn_get_modrm_reg_ptr()
23ef731e4365 x86/insn-eval: Handle insn_get_opcode() failure
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:24 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/mm'
* x86/mm:
b64dfcde1ca9 x86/mm: Prevent early boot triple-faults with instrumentation
35fa745286ac x86/mm: Include spinlock_t definition in pgtable.
71d5049b0538 x86/mm: Flush global TLB when switching to trampoline page-table
f154f290855b x86/mm/64: Flush global TLB on boot and AP bringup
9de4999050b5 x86/realmode: Add comment for Global bit usage in trampoline_pgd
e1cd82a33902 x86/mm: Add missing <asm/cpufeatures.h> dependency to <asm/page_64.h>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:24 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/paravirt'
* x86/paravirt:
6da5175dbe1c x86/paravirt: Fix build PARAVIRT_XXL=y without XEN_PV
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:23 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/platform'
* x86/platform:
9e4d52a00a02 x86/ce4100: Replace "ti,pcf8575" by "nxp,pcf8575"
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:23 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/sev'
* x86/sev:
20f07a044a76 x86/sev: Move common memory encryption code to mem_encrypt.c
dbca5e1a04f8 x86/sev: Rename mem_encrypt.c to mem_encrypt_amd.c
8260b9820f70 x86/sev: Use CC_ATTR attribute to generalize string I/O unroll
75cc9a84c9eb x86/sev: Remove do_early_exception() forward declarations
5ed0a99b12aa x86/head64: Carve out the guest encryption postprocessing into a helper
dbc4c70e3cdf x86/sev: Get rid of excessive use of defines
18c3933c1983 x86/sev: Shorten GHCB terminate macro names
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:22 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/sgx'
* x86/sgx:
2056e2989bf4 x86/sgx: Fix NULL pointer dereference on non-SGX systems
572a0a647b9b selftests/sgx: Fix corrupted cpuid macro invocation
50468e431335 x86/sgx: Add an attribute for the amount of SGX memory in a NUMA node
5c16f7ee03c0 Merge branch 'x86/urgent' into x86/sgx, to resolve conflict
379e4de9e140 x86/sgx: Fix minor documentation issues
688542e29fae selftests/sgx: Add test for multiple TCS entry
26e688f1263a selftests/sgx: Enable multiple thread support
abc5cec47350 selftests/sgx: Add page permission and exception test
c085dfc7685c selftests/sgx: Rename test properties in preparation for more enclave tests
41493a095e48 selftests/sgx: Provide per-op parameter structs for the test enclave
f0ff2447b861 selftests/sgx: Add a new kselftest: Unclobbered_vdso_oversubscribed
065825db1fd6 selftests/sgx: Move setup_test_encl() to each TEST_F()
1b35eb719549 selftests/sgx: Encpsulate the test enclave creation
147172148909 selftests/sgx: Dump segments and /proc/self/maps only on failure
3200505d4de6 selftests/sgx: Create a heap for the test enclave
5f0ce664d8c6 selftests/sgx: Make data measurement for an enclave segment optional
39f62536be2f selftests/sgx: Assign source for each segment
5064343fb155 selftests/sgx: Fix a benign linker warning
3ad6fd77a2d6 x86/sgx: Add check for SGX pages to ghes_do_memory_failure()
c6acb1e7bf46 x86/sgx: Add hook to error injection address validation
03b122da74b2 x86/sgx: Hook arch_memory_failure() into mainline code
a495cbdffa30 x86/sgx: Add SGX infrastructure to recover from poison
992801ae9243 x86/sgx: Initial poison handling for dirty and free pages
40e0e7843e23 x86/sgx: Add infrastructure to identify SGX EPC pages
d6d261bded8a x86/sgx: Add new sgx_epc_page flag bit to mark free pages
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 10:03:22 +0000 (11:03 +0100)]
Merge branch into tip/master: 'x86/vdso'
* x86/vdso:
9102fa346041 x86/purgatory: Remove -nostdlib compiler flag
a41f5b78ac5b x86/vdso: Remove -nostdlib compiler flag
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar [Sat, 8 Jan 2022 09:53:57 +0000 (10:53 +0100)]
Merge branch 'linus' into irq/core, to fix conflict
Conflicts:
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Linus Torvalds [Fri, 7 Jan 2022 23:58:06 +0000 (15:58 -0800)]
Merge branch 'for-5.16-fixes' of git://git./linux/kernel/git/tj/cgroup
Pull cgroup fixes from Tejun Heo:
"This contains the cgroup.procs permission check fixes so that they use
the credentials at the time of open rather than write, which also
fixes the cgroup namespace lifetime bug"
* 'for-5.16-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
selftests: cgroup: Test open-time cgroup namespace usage for migration checks
selftests: cgroup: Test open-time credential usage for migration checks
selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644
cgroup: Use open-time cgroup namespace for process migration perm checks
cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv
cgroup: Use open-time credentials for process migraton perm checks
Linus Torvalds [Fri, 7 Jan 2022 21:28:20 +0000 (13:28 -0800)]
Merge tag 'block-5.16-2022-01-07' of git://git.kernel.dk/linux-block
Pull block fix from Jens Axboe:
"Just the md bitmap regression this time"
* tag 'block-5.16-2022-01-07' of git://git.kernel.dk/linux-block:
md/raid1: fix missing bitmap update w/o WriteMostly devices
Linus Torvalds [Fri, 7 Jan 2022 21:22:58 +0000 (13:22 -0800)]
Merge tag 'edac_urgent_for_v5.16' of git://git./linux/kernel/git/ras/ras
Pull EDAC fix from Tony Luck:
"Fix 10nm EDAC driver to release and unmap resources on systems without
HBM"
* tag 'edac_urgent_for_v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
EDAC/i10nm: Release mdev/mbase when failing to detect HBM
Linus Torvalds [Fri, 7 Jan 2022 17:28:37 +0000 (09:28 -0800)]
Merge tag 'for-linus' of git://git./virt/kvm/kvm
Pull kvm fixes from Paolo Bonzini:
"Two small fixes for x86:
- lockdep WARN due to missing lock nesting annotation
- NULL pointer dereference when accessing debugfs"
* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: x86: Check for rmaps allocation
KVM: SEV: Mark nested locking of kvm->lock
Linus Torvalds [Fri, 7 Jan 2022 17:17:53 +0000 (09:17 -0800)]
Merge tag 'drm-fixes-2022-01-07' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie:
"There is only the amdgpu runtime pm regression fix in here:
amdgpu:
- suspend/resume fix
- fix runtime PM regression"
* tag 'drm-fixes-2022-01-07' of git://anongit.freedesktop.org/drm/drm:
drm/amdgpu: disable runpm if we are the primary adapter
fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb
drm/amd/pm: keep the BACO feature enabled for suspend
Nikunj A Dadhania [Wed, 5 Jan 2022 04:03:37 +0000 (09:33 +0530)]
KVM: x86: Check for rmaps allocation
With TDP MMU being the default now, access to mmu_rmaps_stat debugfs
file causes following oops:
BUG: kernel NULL pointer dereference, address:
0000000000000000
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP NOPTI
CPU: 7 PID: 3185 Comm: cat Not tainted 5.16.0-rc4+ #204
RIP: 0010:pte_list_count+0x6/0x40
Call Trace:
<TASK>
? kvm_mmu_rmaps_stat_show+0x15e/0x320
seq_read_iter+0x126/0x4b0
? aa_file_perm+0x124/0x490
seq_read+0xf5/0x140
full_proxy_read+0x5c/0x80
vfs_read+0x9f/0x1a0
ksys_read+0x67/0xe0
__x64_sys_read+0x19/0x20
do_syscall_64+0x3b/0xc0
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7fca6fc13912
Return early when rmaps are not present.
Reported-by: Vasant Hegde <vasant.hegde@amd.com>
Tested-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Message-Id: <
20220105040337.4234-1-nikunj@amd.com>
Cc: stable@vger.kernel.org
Fixes:
3bcd0662d66f ("KVM: X86: Introduce mmu_rmaps_stat per-vm debugfs file")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Wanpeng Li [Wed, 5 Jan 2022 06:41:03 +0000 (22:41 -0800)]
KVM: SEV: Mark nested locking of kvm->lock
Both source and dest vms' kvm->locks are held in sev_lock_two_vms.
Mark one with a different subtype to avoid false positives from lockdep.
Fixes:
c9d61dcb0bc26 (KVM: SEV: accept signals in sev_lock_two_vms)
Reported-by: Yiru Xu <xyru1999@gmail.com>
Tested-by: Jinrong Liang <cloudliang@tencent.com>
Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
Message-Id: <
1641364863-26331-1-git-send-email-wanpengli@tencent.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Dave Hansen [Tue, 4 Jan 2022 17:15:27 +0000 (09:15 -0800)]
x86/sgx: Fix NULL pointer dereference on non-SGX systems
== Problem ==
Nathan Chancellor reported an oops when aceessing the
'sgx_total_bytes' sysfs file:
https://lore.kernel.org/all/YbzhBrimHGGpddDM@archlinux-ax161/
The sysfs output code accesses the sgx_numa_nodes[] array
unconditionally. However, this array is allocated during SGX
initialization, which only occurs on systems where SGX is
supported.
If the sysfs file is accessed on systems without SGX support,
sgx_numa_nodes[] is NULL and an oops occurs.
== Solution ==
To fix this, hide the entire nodeX/x86/ attribute group on
systems without SGX support using the ->is_visible attribute
group callback.
Unfortunately, SGX is initialized via a device_initcall() which
occurs _after_ the ->is_visible() callback. Instead of moving
SGX initialization earlier, call sysfs_update_group() during
SGX initialization to update the group visiblility.
This update requires moving the SGX sysfs code earlier in
sgx/main.c. There are no code changes other than the addition of
arch_update_sysfs_visibility() and a minor whitespace fixup to
arch_node_attr_is_visible() which checkpatch caught.
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-sgx@vger.kernel.org
Cc: x86@kernel.org
Fixes:
50468e431335 ("x86/sgx: Add an attribute for the amount of SGX memory in a NUMA node")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Jarkko Sakkinen <jarkko@kernel.org>
Link: https://lkml.kernel.org/r/20220104171527.5E8416A8@davehans-spike.ostc.intel.com
Linus Torvalds [Fri, 7 Jan 2022 02:35:17 +0000 (18:35 -0800)]
Merge tag 'for-linus' of git://git./linux/kernel/git/rdma/rdma
Pull rdma fixes from Jason Gunthorpe:
"Last pull for 5.16, the reversion has been known for a while now but
didn't get a proper fix in time. Looks like we will have several
info-leak bugs to take care of going foward.
- Revert the patch fixing the DM related crash causing a widespread
regression for kernel ULPs. A proper fix just didn't appear this
cycle due to the holidays
- Missing NULL check on alloc in uverbs
- Double free in rxe error paths
- Fix a new kernel-infoleak report when forming ah_attr's without
GRH's in ucma"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
RDMA/core: Don't infoleak GRH fields
RDMA/uverbs: Check for null return of kmalloc_array
Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow"
RDMA/rxe: Prevent double freeing rxe_map_set()
Linus Torvalds [Thu, 6 Jan 2022 23:00:43 +0000 (15:00 -0800)]
Merge tag 'trace-v5.16-rc8' of git://git./linux/kernel/git/rostedt/linux-trace
Pull tracing fixes from Steven Rostedt:
"Three minor tracing fixes:
- Fix missing prototypes in sample module for direct functions
- Fix check of valid buffer in get_trace_buf()
- Fix annotations of percpu pointers"
* tag 'trace-v5.16-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
tracing: Tag trace_percpu_buffer as a percpu pointer
tracing: Fix check for trace_percpu_buffer validity in get_trace_buf()
ftrace/samples: Add missing prototypes direct functions
Tejun Heo [Thu, 6 Jan 2022 21:02:29 +0000 (11:02 -1000)]
selftests: cgroup: Test open-time cgroup namespace usage for migration checks
When a task is writing to an fd opened by a different task, the perm check
should use the cgroup namespace of the latter task. Add a test for it.
Tested-by: Michal Koutný <mkoutny@suse.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Tejun Heo [Thu, 6 Jan 2022 21:02:29 +0000 (11:02 -1000)]
selftests: cgroup: Test open-time credential usage for migration checks
When a task is writing to an fd opened by a different task, the perm check
should use the credentials of the latter task. Add a test for it.
Tested-by: Michal Koutný <mkoutny@suse.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Tejun Heo [Thu, 6 Jan 2022 21:02:29 +0000 (11:02 -1000)]
selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644
0644 is an odd perm to create a cgroup which is a directory. Use the regular
0755 instead. This is necessary for euid switching test case.
Reviewed-by: Michal Koutný <mkoutny@suse.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Tejun Heo [Thu, 6 Jan 2022 21:02:29 +0000 (11:02 -1000)]
cgroup: Use open-time cgroup namespace for process migration perm checks
cgroup process migration permission checks are performed at write time as
whether a given operation is allowed or not is dependent on the content of
the write - the PID. This currently uses current's cgroup namespace which is
a potential security weakness as it may allow scenarios where a less
privileged process tricks a more privileged one into writing into a fd that
it created.
This patch makes cgroup remember the cgroup namespace at the time of open
and uses it for migration permission checks instad of current's. Note that
this only applies to cgroup2 as cgroup1 doesn't have namespace support.
This also fixes a use-after-free bug on cgroupns reported in
https://lore.kernel.org/r/
00000000000048c15c05d0083397@google.com
Note that backporting this fix also requires the preceding patch.
Reported-by: "Eric W. Biederman" <ebiederm@xmission.com>
Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org>
Cc: Michal Koutný <mkoutny@suse.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Michal Koutný <mkoutny@suse.com>
Reported-by: syzbot+50f5cf33a284ce738b62@syzkaller.appspotmail.com
Link: https://lore.kernel.org/r/00000000000048c15c05d0083397@google.com
Fixes:
5136f6365ce3 ("cgroup: implement "nsdelegate" mount option")
Signed-off-by: Tejun Heo <tj@kernel.org>
Tejun Heo [Thu, 6 Jan 2022 21:02:29 +0000 (11:02 -1000)]
cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv
of->priv is currently used by each interface file implementation to store
private information. This patch collects the current two private data usages
into struct cgroup_file_ctx which is allocated and freed by the common path.
This allows generic private data which applies to multiple files, which will
be used to in the following patch.
Note that cgroup_procs iterator is now embedded as procs.iter in the new
cgroup_file_ctx so that it doesn't need to be allocated and freed
separately.
v2: union dropped from cgroup_file_ctx and the procs iterator is embedded in
cgroup_file_ctx as suggested by Linus.
v3: Michal pointed out that cgroup1's procs pidlist uses of->priv too.
Converted. Didn't change to embedded allocation as cgroup1 pidlists get
stored for caching.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: Michal Koutný <mkoutny@suse.com>
Tejun Heo [Thu, 6 Jan 2022 21:02:28 +0000 (11:02 -1000)]
cgroup: Use open-time credentials for process migraton perm checks
cgroup process migration permission checks are performed at write time as
whether a given operation is allowed or not is dependent on the content of
the write - the PID. This currently uses current's credentials which is a
potential security weakness as it may allow scenarios where a less
privileged process tricks a more privileged one into writing into a fd that
it created.
This patch makes both cgroup2 and cgroup1 process migration interfaces to
use the credentials saved at the time of open (file->f_cred) instead of
current's.
Reported-by: "Eric W. Biederman" <ebiederm@xmission.com>
Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org>
Fixes:
187fe84067bd ("cgroup: require write perm on common ancestor when moving processes on the default hierarchy")
Reviewed-by: Michal Koutný <mkoutny@suse.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Dave Airlie [Thu, 6 Jan 2022 20:46:07 +0000 (06:46 +1000)]
Merge tag 'amd-drm-fixes-5.16-2021-12-31' of ssh://gitlab.freedesktop.org/agd5f/linux into drm-fixes
amd-drm-fixes-5.16-2021-12-31:
amdgpu:
- Suspend/resume fix
- Restore runtime pm behavior with efifb
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211231143825.11479-1-alexander.deucher@amd.com
Naveen N. Rao [Thu, 23 Dec 2021 10:34:39 +0000 (16:04 +0530)]
tracing: Tag trace_percpu_buffer as a percpu pointer
Tag trace_percpu_buffer as a percpu pointer to resolve warnings
reported by sparse:
/linux/kernel/trace/trace.c:3218:46: warning: incorrect type in initializer (different address spaces)
/linux/kernel/trace/trace.c:3218:46: expected void const [noderef] __percpu *__vpp_verify
/linux/kernel/trace/trace.c:3218:46: got struct trace_buffer_struct *
/linux/kernel/trace/trace.c:3234:9: warning: incorrect type in initializer (different address spaces)
/linux/kernel/trace/trace.c:3234:9: expected void const [noderef] __percpu *__vpp_verify
/linux/kernel/trace/trace.c:3234:9: got int *
Link: https://lkml.kernel.org/r/ebabd3f23101d89cb75671b68b6f819f5edc830b.1640255304.git.naveen.n.rao@linux.vnet.ibm.com
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Fixes:
07d777fe8c398 ("tracing: Add percpu buffers for trace_printk()")
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Naveen N. Rao [Thu, 23 Dec 2021 10:34:38 +0000 (16:04 +0530)]
tracing: Fix check for trace_percpu_buffer validity in get_trace_buf()
With the new osnoise tracer, we are seeing the below splat:
Kernel attempted to read user page (
c7d880000) - exploit attempt? (uid: 0)
BUG: Unable to handle kernel data access on read at 0xc7d880000
Faulting instruction address: 0xc0000000002ffa10
Oops: Kernel access of bad area, sig: 11 [#1]
LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
...
NIP [
c0000000002ffa10] __trace_array_vprintk.part.0+0x70/0x2f0
LR [
c0000000002ff9fc] __trace_array_vprintk.part.0+0x5c/0x2f0
Call Trace:
[
c0000008bdd73b80] [
c0000000001c49cc] put_prev_task_fair+0x3c/0x60 (unreliable)
[
c0000008bdd73be0] [
c000000000301430] trace_array_printk_buf+0x70/0x90
[
c0000008bdd73c00] [
c0000000003178b0] trace_sched_switch_callback+0x250/0x290
[
c0000008bdd73c90] [
c000000000e70d60] __schedule+0x410/0x710
[
c0000008bdd73d40] [
c000000000e710c0] schedule+0x60/0x130
[
c0000008bdd73d70] [
c000000000030614] interrupt_exit_user_prepare_main+0x264/0x270
[
c0000008bdd73de0] [
c000000000030a70] syscall_exit_prepare+0x150/0x180
[
c0000008bdd73e10] [
c00000000000c174] system_call_vectored_common+0xf4/0x278
osnoise tracer on ppc64le is triggering osnoise_taint() for negative
duration in get_int_safe_duration() called from
trace_sched_switch_callback()->thread_exit().
The problem though is that the check for a valid trace_percpu_buffer is
incorrect in get_trace_buf(). The check is being done after calculating
the pointer for the current cpu, rather than on the main percpu pointer.
Fix the check to be against trace_percpu_buffer.
Link: https://lkml.kernel.org/r/a920e4272e0b0635cf20c444707cbce1b2c8973d.1640255304.git.naveen.n.rao@linux.vnet.ibm.com
Cc: stable@vger.kernel.org
Fixes:
e2ace001176dc9 ("tracing: Choose static tp_printk buffer by explicit nesting count")
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Jiri Olsa [Sun, 19 Dec 2021 13:53:17 +0000 (14:53 +0100)]
ftrace/samples: Add missing prototypes direct functions
There's another compilation fail (first here [1]) reported by kernel
test robot for W=1 clang build:
>> samples/ftrace/ftrace-direct-multi-modify.c:7:6: warning: no previous
prototype for function 'my_direct_func1' [-Wmissing-prototypes]
void my_direct_func1(unsigned long ip)
Direct functions in ftrace direct sample modules need to have prototypes
defined. They are already global in order to be visible for the inline
assembly, so there's no problem.
The kernel test robot reported just error for ftrace-direct-multi-modify,
but I got same errors also for the rest of the modules touched by this patch.
[1]
67d4f6e3bf5d ftrace/samples: Add missing prototype for my_direct_func
Link: https://lkml.kernel.org/r/20211219135317.212430-1-jolsa@kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Fixes:
e1067a07cfbc ("ftrace/samples: Add module to test multi direct modify interface")
Fixes:
ae0cc3b7e7f5 ("ftrace/samples: Add a sample module that implements modify_ftrace_direct()")
Fixes:
156473a0ff4f ("ftrace: Add another example of register_ftrace_direct() use case")
Fixes:
b06457c83af6 ("ftrace: Add sample module that uses register_ftrace_direct()")
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Linus Torvalds [Wed, 5 Jan 2022 22:08:56 +0000 (14:08 -0800)]
Merge tag 'net-5.16-final' of git://git./linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski"
"Networking fixes, including fixes from bpf, and WiFi. One last pull
request, turns out some of the recent fixes did more harm than good.
Current release - regressions:
- Revert "xsk: Do not sleep in poll() when need_wakeup set", made the
problem worse
- Revert "net: phy: fixed_phy: Fix NULL vs IS_ERR() checking in
__fixed_phy_register", broke EPROBE_DEFER handling
- Revert "net: usb: r8152: Add MAC pass-through support for more
Lenovo Docks", broke setups without a Lenovo dock
Current release - new code bugs:
- selftests: set amt.sh executable
Previous releases - regressions:
- batman-adv: mcast: don't send link-local multicast to mcast routers
Previous releases - always broken:
- ipv4/ipv6: check attribute length for RTA_FLOW / RTA_GATEWAY
- sctp: hold endpoint before calling cb in
sctp_transport_lookup_process
- mac80211: mesh: embed mesh_paths and mpp_paths into
ieee80211_if_mesh to avoid complicated handling of sub-object
allocation failures
- seg6: fix traceroute in the presence of SRv6
- tipc: fix a kernel-infoleak in __tipc_sendmsg()"
* tag 'net-5.16-final' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (36 commits)
selftests: set amt.sh executable
Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks"
sfc: The RX page_ring is optional
iavf: Fix limit of total number of queues to active queues of VF
i40e: Fix incorrect netdev's real number of RX/TX queues
i40e: Fix for displaying message regarding NVM version
i40e: fix use-after-free in i40e_sync_filters_subtask()
i40e: Fix to not show opcode msg on unsuccessful VF MAC change
ieee802154: atusb: fix uninit value in atusb_set_extended_addr
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
mac80211: initialize variable have_higher_than_11mbit
sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc
netrom: fix copying in user data in nr_setsockopt
udp6: Use Segment Routing Header for dest address if present
icmp: ICMPV6: Examine invoking packet for Segment Route Headers.
seg6: export get_srh() for ICMP handling
Revert "net: phy: fixed_phy: Fix NULL vs IS_ERR() checking in __fixed_phy_register"
ipv6: Do cleanup if attribute validation fails in multipath route
ipv6: Continue processing multipath route even if gateway attribute is invalid
net/fsl: Remove leftover definition in xgmac_mdio
...
Leon Romanovsky [Tue, 4 Jan 2022 12:21:52 +0000 (14:21 +0200)]
RDMA/core: Don't infoleak GRH fields
If dst->is_global field is not set, the GRH fields are not cleared
and the following infoleak is reported.
=====================================================
BUG: KMSAN: kernel-infoleak in instrument_copy_to_user include/linux/instrumented.h:121 [inline]
BUG: KMSAN: kernel-infoleak in _copy_to_user+0x1c9/0x270 lib/usercopy.c:33
instrument_copy_to_user include/linux/instrumented.h:121 [inline]
_copy_to_user+0x1c9/0x270 lib/usercopy.c:33
copy_to_user include/linux/uaccess.h:209 [inline]
ucma_init_qp_attr+0x8c7/0xb10 drivers/infiniband/core/ucma.c:1242
ucma_write+0x637/0x6c0 drivers/infiniband/core/ucma.c:1732
vfs_write+0x8ce/0x2030 fs/read_write.c:588
ksys_write+0x28b/0x510 fs/read_write.c:643
__do_sys_write fs/read_write.c:655 [inline]
__se_sys_write fs/read_write.c:652 [inline]
__ia32_sys_write+0xdb/0x120 fs/read_write.c:652
do_syscall_32_irqs_on arch/x86/entry/common.c:114 [inline]
__do_fast_syscall_32+0x96/0xf0 arch/x86/entry/common.c:180
do_fast_syscall_32+0x34/0x70 arch/x86/entry/common.c:205
do_SYSENTER_32+0x1b/0x20 arch/x86/entry/common.c:248
entry_SYSENTER_compat_after_hwframe+0x4d/0x5c
Local variable resp created at:
ucma_init_qp_attr+0xa4/0xb10 drivers/infiniband/core/ucma.c:1214
ucma_write+0x637/0x6c0 drivers/infiniband/core/ucma.c:1732
Bytes 40-59 of 144 are uninitialized
Memory access of size 144 starts at
ffff888167523b00
Data copied to user address
0000000020000100
CPU: 1 PID: 25910 Comm: syz-executor.1 Not tainted 5.16.0-rc5-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
=====================================================
Fixes:
4ba66093bdc6 ("IB/core: Check for global flag when using ah_attr")
Link: https://lore.kernel.org/r/0e9dd51f93410b7b2f4f5562f52befc878b71afa.1641298868.git.leonro@nvidia.com
Reported-by: syzbot+6d532fa8f9463da290bc@syzkaller.appspotmail.com
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Taehee Yoo [Wed, 5 Jan 2022 14:44:36 +0000 (14:44 +0000)]
selftests: set amt.sh executable
amt.sh test script will not work because it doesn't have execution
permission. So, it adds execution permission.
Reported-by: Hangbin Liu <liuhangbin@gmail.com>
Fixes:
c08e8baea78e ("selftests: add amt interface selftest script")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Link: https://lore.kernel.org/r/20220105144436.13415-1-ap420073@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Jiasheng Jiang [Fri, 31 Dec 2021 09:33:15 +0000 (17:33 +0800)]
RDMA/uverbs: Check for null return of kmalloc_array
Because of the possible failure of the allocation, data might be NULL
pointer and will cause the dereference of the NULL pointer later.
Therefore, it might be better to check it and return -ENOMEM.
Fixes:
6884c6c4bd09 ("RDMA/verbs: Store the write/write_ex uapi entry points in the uverbs_api")
Link: https://lore.kernel.org/r/20211231093315.1917667-1-jiasheng@iscas.ac.cn
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Aaron Ma [Wed, 5 Jan 2022 15:51:02 +0000 (23:51 +0800)]
Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks"
This reverts commit
f77b83b5bbab53d2be339184838b19ed2c62c0a5.
This change breaks multiple usb to ethernet dongles attached on Lenovo
USB hub.
Fixes:
f77b83b5bbab ("net: usb: r8152: Add MAC passthrough support for more Lenovo Docks")
Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
Link: https://lore.kernel.org/r/20220105155102.8557-1-aaron.ma@canonical.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Linus Torvalds [Wed, 5 Jan 2022 17:30:10 +0000 (09:30 -0800)]
Merge tag 'gpio-fixes-for-v5.16' of git://git./linux/kernel/git/brgl/linux
Pull gpio fixes from Bartosz Golaszewski:
"Here are two last fixes for this release cycle from the GPIO
subsystem:
- fix irq offset calculation in gpio-aspeed-sgpio
- update the MAINTAINERS entry for gpio-brcmstb"
* tag 'gpio-fixes-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
MAINTAINERS: update gpio-brcmstb maintainers
gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler
Jakub Kicinski [Wed, 5 Jan 2022 17:00:11 +0000 (09:00 -0800)]
Merge tag 'ieee802154-for-net-2022-01-05' of git://git./linux/kernel/git/sschmidt/wpan
Stefan Schmidt says:
====================
pull-request: ieee802154 for net 2022-01-05
Below I have a last minute fix for the atusb driver.
Pavel fixes a KASAN uninit report for the driver. This version is the
minimal impact fix to ease backporting. A bigger rework of the driver to
avoid potential similar problems is ongoing and will come through net-next
when ready.
* tag 'ieee802154-for-net-2022-01-05' of git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan:
ieee802154: atusb: fix uninit value in atusb_set_extended_addr
====================
Link: https://lore.kernel.org/r/20220105153914.512305-1-stefan@datenfreihafen.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Maor Gottlieb [Wed, 22 Dec 2021 10:13:12 +0000 (12:13 +0200)]
Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow"
This patch is not the full fix and still causes to call traces
during mlx5_ib_dereg_mr().
This reverts commit
f0ae4afe3d35e67db042c58a52909e06262b740f.
Fixes:
f0ae4afe3d35 ("RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow")
Link: https://lore.kernel.org/r/20211222101312.1358616-1-maorg@nvidia.com
Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
Acked-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
David S. Miller [Wed, 5 Jan 2022 11:15:16 +0000 (11:15 +0000)]
Merge branch '40GbE' of git://git./linux/kernel/git/tnguy/net-queue
Tony Nguyen says:
====================
Intel Wired LAN Driver Updates 2022-01-04
This series contains updates to i40e and iavf drivers.
Mateusz adjusts displaying of failed VF MAC message when the failure is
expected as well as modifying an NVM info message to not confuse the user
for i40e.
Di Zhu fixes a use-after-free issue MAC filters for i40e.
Jedrzej fixes an issue with misreporting of Rx and Tx queues during
reinitialization for i40e.
Karen correct checking of channel queue configuration to occur against
active queues for iavf.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Martin Habets [Sun, 2 Jan 2022 08:41:22 +0000 (08:41 +0000)]
sfc: The RX page_ring is optional
The RX page_ring is an optional feature that improves
performance. When allocation fails the driver can still
function, but possibly with a lower bandwidth.
Guard against dereferencing a NULL page_ring.
Fixes:
2768935a4660 ("sfc: reuse pages to avoid DMA mapping/unmapping costs")
Signed-off-by: Martin Habets <habetsm.xilinx@gmail.com>
Reported-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Link: https://lore.kernel.org/r/164111288276.5798.10330502993729113868.stgit@palantir17.mph.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Karen Sornek [Wed, 1 Sep 2021 07:21:46 +0000 (09:21 +0200)]
iavf: Fix limit of total number of queues to active queues of VF
In the absence of this validation, if the user requests to
configure queues more than the enabled queues, it results in
sending the requested number of queues to the kernel stack
(due to the asynchronous nature of VF response), in which
case the stack might pick a queue to transmit that is not
enabled and result in Tx hang. Fix this bug by
limiting the total number of queues allocated for VF to
active queues of VF.
Fixes:
d5b33d024496 ("i40evf: add ndo_setup_tc callback to i40evf")
Signed-off-by: Ashwin Vijayavel <ashwin.vijayavel@intel.com>
Signed-off-by: Karen Sornek <karen.sornek@intel.com>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Jedrzej Jagielski [Fri, 17 Dec 2021 14:29:05 +0000 (14:29 +0000)]
i40e: Fix incorrect netdev's real number of RX/TX queues
There was a wrong queues representation in sysfs during
driver's reinitialization in case of online cpus number is
less than combined queues. It was caused by stopped
NetworkManager, which is responsible for calling vsi_open
function during driver's initialization.
In specific situation (ex. 12 cpus online) there were 16 queues
in /sys/class/net/<iface>/queues. In case of modifying queues with
value higher, than number of online cpus, then it caused write
errors and other errors.
Add updating of sysfs's queues representation during driver
initialization.
Fixes:
41c445ff0f48 ("i40e: main driver core")
Signed-off-by: Lukasz Cieplicki <lukaszx.cieplicki@intel.com>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Mateusz Palczewski [Thu, 9 Dec 2021 10:04:35 +0000 (11:04 +0100)]
i40e: Fix for displaying message regarding NVM version
When loading the i40e driver, it prints a message like: 'The driver for the
device detected a newer version of the NVM image v1.x than expected v1.y.
Please install the most recent version of the network driver.' This is
misleading as the driver is working as expected.
Fix that by removing the second part of message and changing it from
dev_info to dev_dbg.
Fixes:
4fb29bddb57f ("i40e: The driver now prints the API version in error message")
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Di Zhu [Mon, 29 Nov 2021 13:52:01 +0000 (19:52 +0600)]
i40e: fix use-after-free in i40e_sync_filters_subtask()
Using ifconfig command to delete the ipv6 address will cause
the i40e network card driver to delete its internal mac_filter and
i40e_service_task kernel thread will concurrently access the mac_filter.
These two processes are not protected by lock
so causing the following use-after-free problems.
print_address_description+0x70/0x360
? vprintk_func+0x5e/0xf0
kasan_report+0x1b2/0x330
i40e_sync_vsi_filters+0x4f0/0x1850 [i40e]
i40e_sync_filters_subtask+0xe3/0x130 [i40e]
i40e_service_task+0x195/0x24c0 [i40e]
process_one_work+0x3f5/0x7d0
worker_thread+0x61/0x6c0
? process_one_work+0x7d0/0x7d0
kthread+0x1c3/0x1f0
? kthread_park+0xc0/0xc0
ret_from_fork+0x35/0x40
Allocated by task
2279810:
kasan_kmalloc+0xa0/0xd0
kmem_cache_alloc_trace+0xf3/0x1e0
i40e_add_filter+0x127/0x2b0 [i40e]
i40e_add_mac_filter+0x156/0x190 [i40e]
i40e_addr_sync+0x2d/0x40 [i40e]
__hw_addr_sync_dev+0x154/0x210
i40e_set_rx_mode+0x6d/0xf0 [i40e]
__dev_set_rx_mode+0xfb/0x1f0
__dev_mc_add+0x6c/0x90
igmp6_group_added+0x214/0x230
__ipv6_dev_mc_inc+0x338/0x4f0
addrconf_join_solict.part.7+0xa2/0xd0
addrconf_dad_work+0x500/0x980
process_one_work+0x3f5/0x7d0
worker_thread+0x61/0x6c0
kthread+0x1c3/0x1f0
ret_from_fork+0x35/0x40
Freed by task
2547073:
__kasan_slab_free+0x130/0x180
kfree+0x90/0x1b0
__i40e_del_filter+0xa3/0xf0 [i40e]
i40e_del_mac_filter+0xf3/0x130 [i40e]
i40e_addr_unsync+0x85/0xa0 [i40e]
__hw_addr_sync_dev+0x9d/0x210
i40e_set_rx_mode+0x6d/0xf0 [i40e]
__dev_set_rx_mode+0xfb/0x1f0
__dev_mc_del+0x69/0x80
igmp6_group_dropped+0x279/0x510
__ipv6_dev_mc_dec+0x174/0x220
addrconf_leave_solict.part.8+0xa2/0xd0
__ipv6_ifa_notify+0x4cd/0x570
ipv6_ifa_notify+0x58/0x80
ipv6_del_addr+0x259/0x4a0
inet6_addr_del+0x188/0x260
addrconf_del_ifaddr+0xcc/0x130
inet6_ioctl+0x152/0x190
sock_do_ioctl+0xd8/0x2b0
sock_ioctl+0x2e5/0x4c0
do_vfs_ioctl+0x14e/0xa80
ksys_ioctl+0x7c/0xa0
__x64_sys_ioctl+0x42/0x50
do_syscall_64+0x98/0x2c0
entry_SYSCALL_64_after_hwframe+0x65/0xca
Fixes:
41c445ff0f48 ("i40e: main driver core")
Signed-off-by: Di Zhu <zhudi2@huawei.com>
Signed-off-by: Rui Zhang <zhangrui182@huawei.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Mateusz Palczewski [Wed, 3 Mar 2021 11:45:33 +0000 (11:45 +0000)]
i40e: Fix to not show opcode msg on unsuccessful VF MAC change
Hide i40e opcode information sent during response to VF in case when
untrusted VF tried to change MAC on the VF interface.
This is implemented by adding an additional parameter 'hide' to the
response sent to VF function that hides the display of error
information, but forwards the error code to VF.
Previously it was not possible to send response with some error code
to VF without displaying opcode information.
Fixes:
5c3c48ac6bf5 ("i40e: implement virtual device interface")
Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Reviewed-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Tony Brelinski <tony.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Pavel Skripkin [Tue, 4 Jan 2022 18:28:06 +0000 (21:28 +0300)]
ieee802154: atusb: fix uninit value in atusb_set_extended_addr
Alexander reported a use of uninitialized value in
atusb_set_extended_addr(), that is caused by reading 0 bytes via
usb_control_msg().
Fix it by validating if the number of bytes transferred is actually
correct, since usb_control_msg() may read less bytes, than was requested
by caller.
Fail log:
BUG: KASAN: uninit-cmp in ieee802154_is_valid_extended_unicast_addr include/linux/ieee802154.h:310 [inline]
BUG: KASAN: uninit-cmp in atusb_set_extended_addr drivers/net/ieee802154/atusb.c:1000 [inline]
BUG: KASAN: uninit-cmp in atusb_probe.cold+0x29f/0x14db drivers/net/ieee802154/atusb.c:1056
Uninit value used in comparison:
311daa649a2003bd stack handle:
000000009a2003bd
ieee802154_is_valid_extended_unicast_addr include/linux/ieee802154.h:310 [inline]
atusb_set_extended_addr drivers/net/ieee802154/atusb.c:1000 [inline]
atusb_probe.cold+0x29f/0x14db drivers/net/ieee802154/atusb.c:1056
usb_probe_interface+0x314/0x7f0 drivers/usb/core/driver.c:396
Fixes:
7490b008d123 ("ieee802154: add support for atusb transceiver")
Reported-by: Alexander Potapenko <glider@google.com>
Acked-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Link: https://lore.kernel.org/r/20220104182806.7188-1-paskripkin@gmail.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
Qiuxu Zhuo [Fri, 24 Dec 2021 09:11:26 +0000 (04:11 -0500)]
EDAC/i10nm: Release mdev/mbase when failing to detect HBM
On systems without HBM (High Bandwidth Memory) mdev/mbase are not
released/unmapped.
Add the code to release mdev/mbase when failing to detect HBM.
[Tony: re-word commit message]
Cc: <stable@vger.kernel.org>
Fixes:
c945088384d0 ("EDAC/i10nm: Add support for high bandwidth memory")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/r/20211224091126.1246-1-qiuxu.zhuo@intel.com
Jakub Kicinski [Tue, 4 Jan 2022 15:18:27 +0000 (07:18 -0800)]
Merge tag 'mac80211-for-net-2022-01-04' of git://git./linux/kernel/git/jberg/mac80211
Johannes Berg says:
====================
Two more changes:
- mac80211: initialize a variable to avoid using it uninitialized
- mac80211 mesh: put some data structures into the container to
fix bugs with and not have to deal with allocation failures
* tag 'mac80211-for-net-2022-01-04' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211:
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
mac80211: initialize variable have_higher_than_11mbit
====================
Link: https://lore.kernel.org/r/20220104144449.64937-1-johannes@sipsolutions.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Li Zhijian [Tue, 28 Dec 2021 01:44:06 +0000 (09:44 +0800)]
RDMA/rxe: Prevent double freeing rxe_map_set()
The same rxe_map_set could be freed twice:
rxe_reg_user_mr()
-> rxe_mr_init_user()
-> rxe_mr_free_map_set() # 1st
-> rxe_drop_ref()
...
-> rxe_mr_cleanup()
-> rxe_mr_free_map_set() # 2nd
Follow normal convection and put resource cleanup either in the error
unwind of the allocator, or the overall free function. Leave the object
unchanged with a NULL cur_map_set on failure and remove the unncessary
free in rxe_mr_init_user().
Link: https://lore.kernel.org/r/20211228014406.1033444-1-lizhijian@cn.fujitsu.com
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Acked-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Pavel Skripkin [Thu, 30 Dec 2021 19:55:47 +0000 (22:55 +0300)]
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
Syzbot hit NULL deref in rhashtable_free_and_destroy(). The problem was
in mesh_paths and mpp_paths being NULL.
mesh_pathtbl_init() could fail in case of memory allocation failure, but
nobody cared, since ieee80211_mesh_init_sdata() returns void. It led to
leaving 2 pointers as NULL. Syzbot has found null deref on exit path,
but it could happen anywhere else, because code assumes these pointers are
valid.
Since all ieee80211_*_setup_sdata functions are void and do not fail,
let's embedd mesh_paths and mpp_paths into parent struct to avoid
adding error handling on higher levels and follow the pattern of others
setup_sdata functions
Fixes:
60854fd94573 ("mac80211: mesh: convert path table to rhashtable")
Reported-and-tested-by: syzbot+860268315ba86ea6b96b@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Link: https://lore.kernel.org/r/20211230195547.23977-1-paskripkin@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Tom Rix [Thu, 23 Dec 2021 16:28:48 +0000 (08:28 -0800)]
mac80211: initialize variable have_higher_than_11mbit
Clang static analysis reports this warnings
mlme.c:5332:7: warning: Branch condition evaluates to a
garbage value
have_higher_than_11mbit)
^~~~~~~~~~~~~~~~~~~~~~~
have_higher_than_11mbit is only set to true some of the time in
ieee80211_get_rates() but is checked all of the time. So
have_higher_than_11mbit needs to be initialized to false.
Fixes:
5d6a1b069b7f ("mac80211: set basic rates earlier")
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/r/20211223162848.3243702-1-trix@redhat.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Eric Dumazet [Tue, 4 Jan 2022 09:45:08 +0000 (01:45 -0800)]
sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc
tx_queue_len can be set to ~0U, we need to be more
careful about overflows.
__fls(0) is undefined, as this report shows:
UBSAN: shift-out-of-bounds in net/sched/sch_qfq.c:1430:24
shift exponent
51770272 is too large for 32-bit type 'int'
CPU: 0 PID: 25574 Comm: syz-executor.0 Not tainted 5.16.0-rc7-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x201/0x2d8 lib/dump_stack.c:106
ubsan_epilogue lib/ubsan.c:151 [inline]
__ubsan_handle_shift_out_of_bounds+0x494/0x530 lib/ubsan.c:330
qfq_init_qdisc+0x43f/0x450 net/sched/sch_qfq.c:1430
qdisc_create+0x895/0x1430 net/sched/sch_api.c:1253
tc_modify_qdisc+0x9d9/0x1e20 net/sched/sch_api.c:1660
rtnetlink_rcv_msg+0x934/0xe60 net/core/rtnetlink.c:5571
netlink_rcv_skb+0x200/0x470 net/netlink/af_netlink.c:2496
netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
netlink_unicast+0x814/0x9f0 net/netlink/af_netlink.c:1345
netlink_sendmsg+0xaea/0xe60 net/netlink/af_netlink.c:1921
sock_sendmsg_nosec net/socket.c:704 [inline]
sock_sendmsg net/socket.c:724 [inline]
____sys_sendmsg+0x5b9/0x910 net/socket.c:2409
___sys_sendmsg net/socket.c:2463 [inline]
__sys_sendmsg+0x280/0x370 net/socket.c:2492
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
Fixes:
462dbc9101ac ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Christoph Hellwig [Tue, 4 Jan 2022 09:21:26 +0000 (10:21 +0100)]
netrom: fix copying in user data in nr_setsockopt
This code used to copy in an unsigned long worth of data before
the sockptr_t conversion, so restore that.
Fixes:
a7b75c5a8c41 ("net: pass a sockptr_t into ->setsockopt")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Tue, 4 Jan 2022 12:17:35 +0000 (12:17 +0000)]
Merge branch 'srv6-traceroute'
Andrew Lunn says:
====================
Fix traceroute in the presence of SRv6
When using SRv6 the destination IP address in the IPv6 header is not
always the true destination, it can be a router along the path that
SRv6 is using.
When ICMP reports an error, e.g, time exceeded, which is what
traceroute uses, it included the packet which invoked the error into
the ICMP message body. Upon receiving such an ICMP packet, the
invoking packet is examined and an attempt is made to find the socket
which sent the packet, so the error can be reported. Lookup is
performed using the source and destination address. If the
intermediary router IP address from the IP header is used, the lookup
fails. It is necessary to dig into the header and find the true
destination address in the Segment Router header, SRH.
v2:
Play games with the skb->network_header rather than clone the skb
v3:
Move helpers into seg6.c
v4:
Move short helper into header file.
Rework getting SRH destination address
v5:
Fix comment to describe function, not caller
Patch 1 exports a helper which can find the SRH in a packet
Patch 2 does the actual examination of the invoking packet
Patch 3 makes use of the results when trying to find the socket.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Andrew Lunn [Mon, 3 Jan 2022 17:11:32 +0000 (18:11 +0100)]
udp6: Use Segment Routing Header for dest address if present
When finding the socket to report an error on, if the invoking packet
is using Segment Routing, the IPv6 destination address is that of an
intermediate router, not the end destination. Extract the ultimate
destination address from the segment address.
This change allows traceroute to function in the presence of Segment
Routing.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Andrew Lunn [Mon, 3 Jan 2022 17:11:31 +0000 (18:11 +0100)]
icmp: ICMPV6: Examine invoking packet for Segment Route Headers.
RFC8754 says:
ICMP error packets generated within the SR domain are sent to source
nodes within the SR domain. The invoking packet in the ICMP error
message may contain an SRH. Since the destination address of a packet
with an SRH changes as each segment is processed, it may not be the
destination used by the socket or application that generated the
invoking packet.
For the source of an invoking packet to process the ICMP error
message, the ultimate destination address of the IPv6 header may be
required. The following logic is used to determine the destination
address for use by protocol-error handlers.
* Walk all extension headers of the invoking IPv6 packet to the
routing extension header preceding the upper-layer header.
- If routing header is type 4 Segment Routing Header (SRH)
o The SID at Segment List[0] may be used as the destination
address of the invoking packet.
Mangle the skb so the network header points to the invoking packet
inside the ICMP packet. The seg6 helpers can then be used on the skb
to find any segment routing headers. If found, mark this fact in the
IPv6 control block of the skb, and store the offset into the packet of
the SRH. Then restore the skb back to its old state.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Andrew Lunn [Mon, 3 Jan 2022 17:11:30 +0000 (18:11 +0100)]
seg6: export get_srh() for ICMP handling
An ICMP error message can contain in its message body part of an IPv6
packet which invoked the error. Such a packet might contain a segment
router header. Export get_srh() so the ICMP code can make use of it.
Since his changes the scope of the function from local to global, add
the seg6_ prefix to keep the namespace clean. And move it into seg6.c
so it is always available, not just when IPV6_SEG6_LWTUNNEL is
enabled.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jens Axboe [Tue, 4 Jan 2022 04:21:11 +0000 (21:21 -0700)]
Merge branch 'md-fixes' of https://git./linux/kernel/git/song/md into block-5.16
Pull MD fix from Song, fixing a raid1 regression with missing bitmap
updates.
* 'md-fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/song/md:
md/raid1: fix missing bitmap update w/o WriteMostly devices
Jakub Kicinski [Tue, 4 Jan 2022 03:50:16 +0000 (19:50 -0800)]
Merge tag 'batadv-net-pullrequest-
20220103' of git://git.open-mesh.org/linux-merge
Simon Wunderlich says:
====================
Here is a batman-adv bugfix:
- avoid sending link-local multicast to multicast routers,
by Linus Lüssing
* tag 'batadv-net-pullrequest-
20220103' of git://git.open-mesh.org/linux-merge:
batman-adv: mcast: don't send link-local multicast to mcast routers
====================
Link: https://lore.kernel.org/r/20220103171203.1124980-1-sw@simonwunderlich.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Florian Fainelli [Mon, 3 Jan 2022 19:34:52 +0000 (11:34 -0800)]
Revert "net: phy: fixed_phy: Fix NULL vs IS_ERR() checking in __fixed_phy_register"
This reverts commit
b45396afa4177f2b1ddfeff7185da733fade1dc3 ("net: phy:
fixed_phy: Fix NULL vs IS_ERR() checking in __fixed_phy_register")
since it prevents any system that uses a fixed PHY without a GPIO
descriptor from properly working:
[ 5.971952] brcm-systemport
9300000.ethernet: failed to register fixed PHY
[ 5.978854] brcm-systemport: probe of
9300000.ethernet failed with error -22
[ 5.986047] brcm-systemport
9400000.ethernet: failed to register fixed PHY
[ 5.992947] brcm-systemport: probe of
9400000.ethernet failed with error -22
Fixes:
b45396afa417 ("net: phy: fixed_phy: Fix NULL vs IS_ERR() checking in __fixed_phy_register")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20220103193453.1214961-1-f.fainelli@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Song Liu [Mon, 3 Jan 2022 21:49:36 +0000 (13:49 -0800)]
md/raid1: fix missing bitmap update w/o WriteMostly devices
commit [1] causes missing bitmap updates when there isn't any WriteMostly
devices.
Detailed steps to reproduce by Norbert (which somehow didn't make to lore):
# setup md10 (raid1) with two drives (1 GByte sparse files)
dd if=/dev/zero of=disk1 bs=1024k seek=1024 count=0
dd if=/dev/zero of=disk2 bs=1024k seek=1024 count=0
losetup /dev/loop11 disk1
losetup /dev/loop12 disk2
mdadm --create /dev/md10 --level=1 --raid-devices=2 /dev/loop11 /dev/loop12
# add bitmap (aka write-intent log)
mdadm /dev/md10 --grow --bitmap=internal
echo check > /sys/block/md10/md/sync_action
root:# cat /sys/block/md10/md/mismatch_cnt
0
root:#
# remove member drive disk2 (loop12)
mdadm /dev/md10 -f loop12 ; mdadm /dev/md10 -r loop12
# modify degraded md device
dd if=/dev/urandom of=/dev/md10 bs=512 count=1
# no blocks recorded as out of sync on the remaining member disk1/loop11
root:# mdadm -X /dev/loop11 | grep Bitmap
Bitmap : 16 bits (chunks), 0 dirty (0.0%)
root:#
# re-add disk2, nothing synced because of empty bitmap
mdadm /dev/md10 --re-add /dev/loop12
# check integrity again
echo check > /sys/block/md10/md/sync_action
# disk1 and disk2 are no longer in sync, reads return differend data
root:# cat /sys/block/md10/md/mismatch_cnt
128
root:#
# clean up
mdadm -S /dev/md10
losetup -d /dev/loop11
losetup -d /dev/loop12
rm disk1 disk2
Fix this by moving the WriteMostly check to the if condition for
alloc_behind_master_bio().
[1] commit
fd3b6975e9c1 ("md/raid1: only allocate write behind bio for WriteMostly device")
Fixes:
fd3b6975e9c1 ("md/raid1: only allocate write behind bio for WriteMostly device")
Cc: stable@vger.kernel.org # v5.12+
Cc: Guoqing Jiang <guoqing.jiang@linux.dev>
Cc: Jens Axboe <axboe@kernel.dk>
Reported-by: Norbert Warmuth <nwarmuth@t-online.de>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Song Liu <song@kernel.org>
David Ahern [Mon, 3 Jan 2022 17:05:55 +0000 (10:05 -0700)]
ipv6: Do cleanup if attribute validation fails in multipath route
As Nicolas noted, if gateway validation fails walking the multipath
attribute the code should jump to the cleanup to free previously
allocated memory.
Fixes:
1ff15a710a86 ("ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route")
Signed-off-by: David Ahern <dsahern@kernel.org>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Link: https://lore.kernel.org/r/20220103170555.94638-1-dsahern@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
David Ahern [Mon, 3 Jan 2022 17:19:11 +0000 (10:19 -0700)]
ipv6: Continue processing multipath route even if gateway attribute is invalid
ip6_route_multipath_del loop continues processing the multipath
attribute even if delete of a nexthop path fails. For consistency,
do the same if the gateway attribute is invalid.
Fixes:
1ff15a710a86 ("ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route")
Signed-off-by: David Ahern <dsahern@kernel.org>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Link: https://lore.kernel.org/r/20220103171911.94739-1-dsahern@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Gregory Fong [Mon, 3 Jan 2022 09:53:02 +0000 (10:53 +0100)]
MAINTAINERS: update gpio-brcmstb maintainers
Add Doug and Florian as maintainers for gpio-brcmstb, and remove myself.
Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Steven Lee [Tue, 14 Dec 2021 04:02:38 +0000 (12:02 +0800)]
gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler
Each aspeed sgpio bank has 64 gpio pins(32 input pins and 32 output pins).
The hwirq base for each sgpio bank should be multiples of 64 rather than
multiples of 32.
Signed-off-by: Steven Lee <steven_lee@aspeedtech.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Linus Torvalds [Sun, 2 Jan 2022 22:23:25 +0000 (14:23 -0800)]
Linux 5.16-rc8
Linus Torvalds [Sun, 2 Jan 2022 22:09:03 +0000 (14:09 -0800)]
Merge tag 'perf-tools-fixes-for-v5.16-2022-01-02' of git://git./linux/kernel/git/acme/linux
Pull perf tools fixes from Arnaldo Carvalho de Melo:
- Fix TUI exit screen refresh race condition in 'perf top'.
- Fix parsing of Intel PT VM time correlation arguments.
- Honour CPU filtering command line request of a script's switch events
in 'perf script'.
- Fix printing of switch events in Intel PT python script.
- Fix duplicate alias events list printing in 'perf list', noticed on
heterogeneous arm64 systems.
- Fix return value of ids__new(), users expect NULL for failure, not
ERR_PTR(-ENOMEM).
* tag 'perf-tools-fixes-for-v5.16-2022-01-02' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
perf top: Fix TUI exit screen refresh race condition
perf pmu: Fix alias events list
perf scripts python: intel-pt-events.py: Fix printing of switch events
perf script: Fix CPU filtering of a script's switch events
perf intel-pt: Fix parsing of VM time correlation arguments
perf expr: Fix return value of ids__new()
Markus Koch [Sun, 2 Jan 2022 16:54:08 +0000 (17:54 +0100)]
net/fsl: Remove leftover definition in xgmac_mdio
commit
26eee0210ad7 ("net/fsl: fix a bug in xgmac_mdio") fixed a bug in
the QorIQ mdio driver but left the (now unused) incorrect bit definition
for MDIO_DATA_BSY in the code. This commit removes it.
Signed-off-by: Markus Koch <markus@notsyncing.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Sun, 2 Jan 2022 18:36:09 +0000 (10:36 -0800)]
Merge branch 'i2c/for-current' of git://git./linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang:
"Better input validation for compat ioctls and a documentation bugfix
for 5.16"
* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
Docs: Fixes link to I2C specification
i2c: validate user data in compat ioctl
Linus Torvalds [Sun, 2 Jan 2022 17:02:54 +0000 (09:02 -0800)]
Merge tag 'x86_urgent_for_v5.16_rc8' of git://git./linux/kernel/git/tip/tip
Pull x86 fix from Borislav Petkov:
- Use the proper CONFIG symbol in a preprocessor check.
* tag 'x86_urgent_for_v5.16_rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/build: Use the proper name CONFIG_FW_LOADER
Thomas Toye [Sat, 1 Jan 2022 17:22:07 +0000 (18:22 +0100)]
rndis_host: support Hytera digital radios
Hytera makes a range of digital (DMR) radios. These radios can be
programmed to a allow a computer to control them over Ethernet over USB,
either using NCM or RNDIS.
This commit adds support for RNDIS for Hytera radios. I tested with a
Hytera PD785 and a Hytera MD785G. When these radios are programmed to
set up a Radio to PC Network using RNDIS, an USB interface will be added
with class 2 (Communications), subclass 2 (Abstract Modem Control) and
an interface protocol of 255 ("vendor specific" - lsusb even hints "MSFT
RNDIS?").
This patch is similar to the solution of this StackOverflow user, but
that only works for the Hytera MD785:
https://stackoverflow.com/a/
53550858
To use the "Radio to PC Network" functionality of Hytera DMR radios, the
radios need to be programmed correctly in CPS (Hytera's Customer
Programming Software). "Forward to PC" should be checked in "Network"
(under "General Setting" in "Conventional") and the "USB Network
Communication Protocol" should be set to RNDIS.
Signed-off-by: Thomas Toye <thomas@toye.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
yaowenbin [Wed, 29 Dec 2021 08:55:19 +0000 (16:55 +0800)]
perf top: Fix TUI exit screen refresh race condition
When the following command is executed several times, a coredump file is
generated.
$ timeout -k 9 5 perf top -e task-clock
*******
*******
*******
0.01% [kernel] [k] __do_softirq
0.01% libpthread-2.28.so [.] __pthread_mutex_lock
0.01% [kernel] [k] __ll_sc_atomic64_sub_return
double free or corruption (!prev) perf top --sort comm,dso
timeout: the monitored command dumped core
When we terminate "perf top" using sending signal method,
SLsmg_reset_smg() called. SLsmg_reset_smg() resets the SLsmg screen
management routines by freeing all memory allocated while it was active.
However SLsmg_reinit_smg() maybe be called by another thread.
SLsmg_reinit_smg() will free the same memory accessed by
SLsmg_reset_smg(), thus it results in a double free.
SLsmg_reinit_smg() is called already protected by ui__lock, so we fix
the problem by adding pthread_mutex_trylock of ui__lock when calling
SLsmg_reset_smg().
Signed-off-by: Wenyu Liu <liuwenyu7@huawei.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: wuxu.wu@huawei.com
Link: http://lore.kernel.org/lkml/a91e3943-7ddc-f5c0-a7f5-360f073c20e6@huawei.com
Signed-off-by: Hewenliang <hewenliang4@huawei.com>
Signed-off-by: yaowenbin <yaowenbin1@huawei.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
John Garry [Tue, 21 Dec 2021 16:11:30 +0000 (00:11 +0800)]
perf pmu: Fix alias events list
Commit
0e0ae8742207c3b4 ("perf list: Display hybrid PMU events with cpu
type") changes the event list for uncore PMUs or arm64 heterogeneous CPU
systems, such that duplicate aliases are incorrectly listed per PMU
(which they should not be), like:
# perf list
...
unc_cbo_cache_lookup.any_es
[Unit: uncore_cbox L3 Lookup any request that access cache and found
line in E or S-state]
unc_cbo_cache_lookup.any_es
[Unit: uncore_cbox L3 Lookup any request that access cache and found
line in E or S-state]
unc_cbo_cache_lookup.any_i
[Unit: uncore_cbox L3 Lookup any request that access cache and found
line in I-state]
unc_cbo_cache_lookup.any_i
[Unit: uncore_cbox L3 Lookup any request that access cache and found
line in I-state]
...
Notice how the events are listed twice.
The named commit changed how we remove duplicate events, in that events
for different PMUs are not treated as duplicates. I suppose this is to
handle how "Each hybrid pmu event has been assigned with a pmu name".
Fix PMU alias listing by restoring behaviour to remove duplicates for
non-hybrid PMUs.
Fixes:
0e0ae8742207c3b4 ("perf list: Display hybrid PMU events with cpu type")
Signed-off-by: John Garry <john.garry@huawei.com>
Tested-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/1640103090-140490-1-git-send-email-john.garry@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Xin Long [Fri, 31 Dec 2021 23:37:37 +0000 (18:37 -0500)]
sctp: hold endpoint before calling cb in sctp_transport_lookup_process
The same fix in commit
5ec7d18d1813 ("sctp: use call_rcu to free endpoint")
is also needed for dumping one asoc and sock after the lookup.
Fixes:
86fdb3448cc1 ("sctp: ensure ep is not destroyed before doing the dump")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Sun, 2 Jan 2022 12:45:13 +0000 (12:45 +0000)]
Merge branch 'ena-fixes'
Arthur Kiyanovski says:
====================
ENA driver bug fixes
Patchset V2 chages:
-------------------
Updated SHA1 of Fixes tag in patch 3/3 to be 12 digits long
Original cover letter:
----------------------
ENA driver bug fixes
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Arthur Kiyanovski [Sun, 2 Jan 2022 07:37:28 +0000 (07:37 +0000)]
net: ena: Fix error handling when calculating max IO queues number
The role of ena_calc_max_io_queue_num() is to return the number
of queues supported by the device, which means the return value
should be >=0.
The function that calls ena_calc_max_io_queue_num(), checks
the return value. If it is 0, it means the device reported
it supports 0 IO queues. This case is considered an error
and is handled by the calling function accordingly.
However the current implementation of ena_calc_max_io_queue_num()
is wrong, since when it detects the device supports 0 IO queues,
it returns -EFAULT.
In such a case the calling function doesn't detect the error,
and therefore doesn't handle it.
This commit changes ena_calc_max_io_queue_num() to return 0
in case the device reported it supports 0 queues, allowing the
calling function to properly handle the error case.
Fixes:
736ce3f414cc ("net: ena: make ethtool -l show correct max number of queues")
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Arthur Kiyanovski [Sun, 2 Jan 2022 07:37:27 +0000 (07:37 +0000)]
net: ena: Fix wrong rx request id by resetting device
A wrong request id received from the device is a sign that
something is wrong with it, therefore trigger a device reset.
Also add some debug info to the "Page is NULL" print to make
it easier to debug.
Fixes:
1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>