5.6.14-rc1 review
Subsystems (3)
Greg Kroah-Hartman
maintainerPATCH 150/194 ARM: dts: imx6dl-yapp4: Fix Ursa board Ethernet connection
In reply to Greg Kroah-HartmanFrom: Michal Vokáč <[email protected]>
commit cbe63a8358310244e6007398bd2c7c70c7fd51cd upstream.
The Y Soft yapp4 platform supports up to two Ethernet ports. The Ursa board though has only one Ethernet port populated and that is the port@2. Since the introduction of this platform into mainline a wrong port was deleted and the Ethernet could never work. Fix this by deleting the correct port node.
--- arch/arm/boot/dts/imx6dl-yapp4-ursa.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx6dl-yapp4-ursa.dts +1 -1
@@ -38,7 +38,7 @@ }; &switch_ports { - /delete-node/ port@2; + /delete-node/ port@3; }; &touchscreen {
Greg Kroah-Hartman
maintainerPATCH 151/194 drm/amd/display: add basic atomic check for cursor plane
In reply to Greg Kroah-HartmanFrom: Simon Ser <[email protected]>
commit 626bf90fe03fa080d8df06bb0397c95c53ae8e27 upstream.
This patch adds a basic cursor check when an atomic test-only commit is performed. The position and size of the cursor plane is checked.
This should fix user-space relying on atomic checks to assign buffers to planes.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +24 -2
@@ -7716,6 +7716,7 @@ static int dm_update_plane_state(structstruct drm_crtc_state *old_crtc_state, *new_crtc_state;struct dm_crtc_state *dm_new_crtc_state, *dm_old_crtc_state;struct dm_plane_state *dm_new_plane_state, *dm_old_plane_state; +struct amdgpu_crtc *new_acrtc;bool needs_reset;int ret =0 ;
@@ -7725,9 +7726,30 @@ static int dm_update_plane_state(struct dm_new_plane_state =to_dm_plane_state (new_plane_state); dm_old_plane_state =to_dm_plane_state (old_plane_state); -/*TODO Implement atomic check for cursor plane */ -if (plane->type ==DRM_PLANE_TYPE_CURSOR ) +/*TODO Implement better atomic check for cursor plane */ +if (plane->type ==DRM_PLANE_TYPE_CURSOR ) { +if (!enable || !new_plane_crtc || +drm_atomic_plane_disabling (plane->state, new_plane_state)) +return 0 ; + + new_acrtc =to_amdgpu_crtc (new_plane_crtc); + +if ((new_plane_state->crtc_w > new_acrtc->max_cursor_width) || + (new_plane_state->crtc_h > new_acrtc->max_cursor_height)) { +DRM_DEBUG_ATOMIC ("Bad cursor size %d x %d\n" , + new_plane_state->crtc_w, new_plane_state->crtc_h); +return -EINVAL ; + } + +if (new_plane_state->crtc_x <= -new_acrtc->max_cursor_width || + new_plane_state->crtc_y <= -new_acrtc->max_cursor_height) { +DRM_DEBUG_ATOMIC ("Bad cursor position %d, %d\n" , + new_plane_state->crtc_x, new_plane_state->crtc_y); +return -EINVAL ; + } +return 0 ; + } needs_reset =should_reset_plane (state, plane, old_plane_state, new_plane_state);
Greg Kroah-Hartman
maintainerPATCH 152/194 drm/amd/amdgpu: add raven1 part to the gfxoff quirk list
In reply to Greg Kroah-HartmanFrom: Tom St Denis <[email protected]>
commit 975f543e7522e17b8a4bf34d7daeac44819aee5a upstream.
On my raven1 system (rev c6) with VBIOS 113-RAVEN-114 GFXOFF is not stable (resulting in large block tiling noise in some applications).
Disabling GFXOFF via the quirk list fixes the problems for me.
--- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -0
@@ -1177,6 +1177,8 @@ static const struct amdgpu_gfxoff_quirk { 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc8 },/* https://bugzilla.kernel.org/show_bug.cgi?id=207171 */ { 0x1002, 0x15dd, 0x103c, 0x83e7, 0xd3 }, +/* GFXOFF is unstable on C6 parts with a VBIOS 113-RAVEN-114 */ + { 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc6 }, { 0, 0, 0, 0, 0 }, };
Greg Kroah-Hartman
maintainerPATCH 153/194 drm/i915/tgl+: Fix interrupt handling for DP AUX transactions
In reply to Greg Kroah-HartmanFrom: Imre Deak <[email protected]>
commit 4457a9db2bdec2360ddb15242341696108167886 upstream.
Unmask/enable AUX interrupts on all ports on TGL+. So far the interrupts worked only on port A, which meant each transaction on other ports took 10ms.
--- drivers/gpu/drm/i915/i915_irq.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-)
drivers/gpu/drm/i915/i915_irq.c +3 -13
@@ -3324,7 +3324,7 @@ static void gen8_de_irq_postinstall(struu32 de_pipe_masked =gen8_de_pipe_fault_mask (dev_priv) |GEN8_PIPE_CDCLK_CRC_DONE ;u32 de_pipe_enables; -u32 de_port_masked =GEN8_AUX_CHANNEL_A ; +u32 de_port_masked =gen8_de_port_aux_mask (dev_priv);u32 de_port_enables;u32 de_misc_masked =GEN8_DE_EDP_PSR ;enum pipe pipe;
@@ -3332,18 +3332,8 @@ static void gen8_de_irq_postinstall(struif (INTEL_GEN (dev_priv) <=10 ) de_misc_masked |=GEN8_DE_MISC_GSE ; -if (INTEL_GEN (dev_priv) >=9 ) { - de_port_masked |=GEN9_AUX_CHANNEL_B |GEN9_AUX_CHANNEL_C | -GEN9_AUX_CHANNEL_D ; -if (IS_GEN9_LP (dev_priv)) - de_port_masked |=BXT_DE_PORT_GMBUS ; - } - -if (INTEL_GEN (dev_priv) >=11 ) - de_port_masked |=ICL_AUX_CHANNEL_E ; - -if (IS_CNL_WITH_PORT_F (dev_priv) ||INTEL_GEN (dev_priv) >=11 ) - de_port_masked |=CNL_AUX_CHANNEL_F ; +if (IS_GEN9_LP (dev_priv)) + de_port_masked |=BXT_DE_PORT_GMBUS ; de_pipe_enables = de_pipe_masked |GEN8_PIPE_VBLANK |GEN8_PIPE_FIFO_UNDERRUN ;
Greg Kroah-Hartman
maintainerPATCH 154/194 powerpc/vdso32: Fallback on getres syscall when clock is unknown
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
commit e963b7a28b2bf2416304e1a15df967fcf662aff5 upstream.
There are other clocks than the standard ones, for instance per process clocks. Therefore, being above the last standard clock doesn't mean it is a bad clock. So, fallback to syscall instead of returning -EINVAL inconditionaly.
--- arch/powerpc/kernel/vdso32/gettimeofday.S | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/powerpc/kernel/vdso32/gettimeofday.S +3 -3
@@ -218,11 +218,11 @@ V_FUNCTION_BEGIN(__kernel_clock_getres) blr /* - * invalid clock + * syscall fallback */ 99: - li r3, EINVAL - crset so + li r0,__NR_clock_getres + sc blr .cfi_endproc V_FUNCTION_END(__kernel_clock_getres)
Greg Kroah-Hartman
maintainerPATCH 155/194 powerpc/32s: Fix build failure with CONFIG_PPC_KUAP_DEBUG
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
commit 4833ce06e6855d526234618b746ffb71d6612c9a upstream.
gpr2 is not a parametre of kuap_check(), it doesn't exist.
Use gpr instead.
--- arch/powerpc/include/asm/book3s/32/kup.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/powerpc/include/asm/book3s/32/kup.h +1 -1
@@ -75,7 +75,7 @@ .macro kuap_check current, gpr#ifdef CONFIG_PPC_KUAP_DEBUG - lwz \gpr2, KUAP(thread) + lwz \gpr, KUAP(thread) 999: twnei \gpr, 0 EMIT_BUG_ENTRY 999b, __FILE__, __LINE__, (BUGFLAG_WARNING | BUGFLAG_ONCE)#endif
Greg Kroah-Hartman
maintainerPATCH 156/194 cifs: fix leaked reference on requeued write
In reply to Greg Kroah-HartmanFrom: Adam McCoy <[email protected]>
commit a48137996063d22ffba77e077425f49873856ca5 upstream.
Failed async writes that are requeued may not clean up a refcount on the file, which can result in a leaked open. This scenario arises very reliably when using persistent handles and a reconnect occurs while writing.
cifs_writev_requeue only releases the reference if the write fails (rc != 0). The server->ops->async_writev operation will take its own reference, so the initial reference can always be released.
--- fs/cifs/cifssmb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/cifs/cifssmb.c +1 -1
@@ -2138,8 +2138,8 @@ cifs_writev_requeue(struct cifs_writedat } } +kref_put (&wdata2->refcount, cifs_writedata_release);if (rc) { -kref_put (&wdata2->refcount, cifs_writedata_release);if (is_retryable_error (rc))continue ; i += nr_pages;
Greg Kroah-Hartman
maintainerPATCH 157/194 KVM: x86: Fix pkru save/restore when guest CR4.PKE=0, move it to x86.c
In reply to Greg Kroah-HartmanFrom: Babu Moger <[email protected]>
commit 37486135d3a7b03acc7755b63627a130437f066a upstream.
Though rdpkru and wrpkru are contingent upon CR4.PKE, the PKRU resource isn't. It can be read with XSAVE and written with XRSTOR. So, if we don't set the guest PKRU value here(kvm_load_guest_xsave_state), the guest can read the host value.
In case of kvm_load_host_xsave_state, guest with CR4.PKE clear could potentially use XRSTOR to change the host PKRU value.
While at it, move pkru state save/restore to common code and the host_pkru field to kvm_vcpu_arch. This will let SVM support protection keys.
Message-Id: <158932794619.44260.14508381096663848853.stgit@naples-babu.amd.com>
--- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/vmx/vmx.c | 18 ------------------ arch/x86/kvm/x86.c | 17 +++++++++++++++++ 3 files changed, 18 insertions(+), 18 deletions(-)
arch/x86/include/asm/kvm_host.h +1 -0
@@ -574,6 +574,7 @@ struct kvm_vcpu_arch {unsigned long cr4;unsigned long cr4_guest_owned_bits;unsigned long cr8; +u32 host_pkru;u32 pkru;u32 hflags;u64 efer;
arch/x86/kvm/vmx/vmx.c +0 -18
@@ -1380,7 +1380,6 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpuvmx_vcpu_pi_load (vcpu, cpu); - vmx->host_pkru =read_pkru (); vmx->host_debugctlmsr =get_debugctlmsr (); }
@@ -6538,11 +6537,6 @@ static void vmx_vcpu_run(struct kvm_vcpukvm_load_guest_xsave_state (vcpu); -if (static_cpu_has (X86_FEATURE_PKU ) && -kvm_read_cr4_bits (vcpu,X86_CR4_PKE ) && - vcpu->arch.pkru != vmx->host_pkru) -__write_pkru (vcpu->arch.pkru); -pt_guest_enter (vmx);atomic_switch_perf_msrs (vmx);
@@ -6631,18 +6625,6 @@ static void vmx_vcpu_run(struct kvm_vcpupt_guest_exit (vmx); -/* -* eager fpu is enabled if PKEY is supported and CR4 is switched -* back on host, so it is safe to read guest PKRU from current -* XSAVE. -*/ -if (static_cpu_has (X86_FEATURE_PKU ) && -kvm_read_cr4_bits (vcpu,X86_CR4_PKE )) { - vcpu->arch.pkru =rdpkru (); -if (vcpu->arch.pkru != vmx->host_pkru) -__write_pkru (vmx->host_pkru); - } -kvm_load_host_xsave_state (vcpu); vmx->nested.nested_run_pending =0 ;
arch/x86/kvm/x86.c +17 -0
@@ -809,11 +809,25 @@ void kvm_load_guest_xsave_state(struct k vcpu->arch.ia32_xss != host_xss)wrmsrl (MSR_IA32_XSS , vcpu->arch.ia32_xss); } + +if (static_cpu_has (X86_FEATURE_PKU ) && + (kvm_read_cr4_bits (vcpu,X86_CR4_PKE ) || + (vcpu->arch.xcr0 &XFEATURE_MASK_PKRU )) && + vcpu->arch.pkru != vcpu->arch.host_pkru) +__write_pkru (vcpu->arch.pkru); }EXPORT_SYMBOL_GPL (kvm_load_guest_xsave_state);void kvm_load_host_xsave_state (struct kvm_vcpu *vcpu) { +if (static_cpu_has (X86_FEATURE_PKU ) && + (kvm_read_cr4_bits (vcpu,X86_CR4_PKE ) || + (vcpu->arch.xcr0 &XFEATURE_MASK_PKRU ))) { + vcpu->arch.pkru =rdpkru (); +if (vcpu->arch.pkru != vcpu->arch.host_pkru) +__write_pkru (vcpu->arch.host_pkru); + } +if (kvm_read_cr4_bits (vcpu,X86_CR4_OSXSAVE )) {if (vcpu->arch.xcr0 != host_xcr0)
@@ -3529,6 +3543,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu kvm_x86_ops->vcpu_load (vcpu, cpu); +/* Save host pkru register if supported */ + vcpu->arch.host_pkru =read_pkru (); +/* Apply any externally detected TSC adjustments (due to suspend) */ if (unlikely (vcpu->arch.tsc_offset_adjustment)) {adjust_tsc_offset_host (vcpu, vcpu->arch.tsc_offset_adjustment);
Greg Kroah-Hartman
maintainerPATCH 158/194 x86: Fix early boot crash on gcc-10, third try
In reply to Greg Kroah-HartmanFrom: Borislav Petkov <[email protected]>
commit a9a3ed1eff3601b63aea4fb462d8b3b92c7c1e7e upstream.
... or the odyssey of trying to disable the stack protector for the function which generates the stack canary value.
The whole story started with Sergei reporting a boot crash with a kernel built with gcc-10:
Kernel panic — not syncing: stack-protector: Kernel stack is corrupted in: start_secondary
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.6.0-rc5—00235—gfffb08b37df9 #139
Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./H77M—D3H, BIOS F12 11/14/2013
Call Trace:
dump_stack
panic
? start_secondary
__stack_chk_fail
start_secondary
secondary_startup_64
-—-[ end Kernel panic — not syncing: stack—protector: Kernel stack is corrupted in: start_secondaryThis happens because gcc-10 tail-call optimizes the last function call in start_secondary() - cpu_startup_entry() - and thus emits a stack canary check which fails because the canary value changes after the boot_init_stack_canary() call.
To fix that, the initial attempt was to mark the one function which generates the stack canary with:
__attribute__((optimize("-fno-stack-protector"))) ... start_secondary(void *unused)
however, using the optimize attribute doesn't work cumulatively as the attribute does not add to but rather replaces previously supplied optimization options - roughly all -fxxx options.
The key one among them being -fno-omit-frame-pointer and thus leading to not present frame pointer - frame pointer which the kernel needs.
The next attempt to prevent compilers from tail-call optimizing the last function call cpu_startup_entry(), shy of carving out start_secondary() into a separate compilation unit and building it with -fno-stack-protector, was to add an empty asm("").
This current solution was short and sweet, and reportedly, is supported by both compilers but we didn't get very far this time: future (LTO?) optimization passes could potentially eliminate this, which leads us to the third attempt: having an actual memory barrier there which the compiler cannot ignore or move around etc.
That should hold for a long time, but hey we said that about the other two solutions too so...
--- arch/x86/include/asm/stackprotector.h | 7 ++++++- arch/x86/kernel/smpboot.c | 8 ++++++++ arch/x86/xen/smp_pv.c | 1 + include/linux/compiler.h | 6 ++++++ init/main.c | 2 ++ 5 files changed, 23 insertions(+), 1 deletion(-)
arch/x86/include/asm/stackprotector.h +6 -1
@@ -55,8 +55,13 @@/* * Initialize the stackprotector canary value. * -* NOTE: this must only be called from functions that never return, +* NOTE: this must only be called from functions that never return * and it must always be inlined. +* +* In addition, it should be called from a compilation unit for which +* stack protector is disabled. Alternatively, the caller should not end +* with a function call which gets tail-call optimized as that would +* lead to checking a modified canary value. */ static __always_inline void boot_init_stack_canary(void) {
arch/x86/kernel/smpboot.c +8 -0
@@ -262,6 +262,14 @@ static void notrace start_secondary(voidwmb ();cpu_startup_entry (CPUHP_AP_ONLINE_IDLE ); + +/* +* Prevent tail call to cpu_startup_entry() because the stack protector +* guard has been changed a couple of function calls up, in +* boot_init_stack_canary() and must not be checked before tail calling +* another function. +*/ +prevent_tail_call_optimization (); }/**
arch/x86/xen/smp_pv.c +1 -0
@@ -92,6 +92,7 @@ asmlinkage __visible void cpu_bringup_ancpu_bringup ();boot_init_stack_canary ();cpu_startup_entry (CPUHP_AP_ONLINE_IDLE ); +prevent_tail_call_optimization (); }void xen_smp_intr_free_pv (unsigned int cpu)
include/linux/compiler.h +6 -0
@@ -356,4 +356,10 @@ static inline void *offset_to_ptr(const/* &a[0] degrades to a pointer: a different type from an array */ #define __must_be_array (a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) +/* +* This is needed in functions which generate the stack canary, see +* arch/x86/kernel/smpboot.c::start_secondary() for an example. +*/ +#define prevent_tail_call_optimization () mb() +#endif /* __LINUX_COMPILER_H */
init/main.c +2 -0
@@ -1032,6 +1032,8 @@ asmlinkage __visible void __init start_k/* Do the rest non-__init'ed, we're now alive */ arch_call_rest_init (); + +prevent_tail_call_optimization (); }/* Call all constructor functions linked into the kernel. */
Greg Kroah-Hartman
maintainerPATCH 159/194 x86/unwind/orc: Fix error handling in __unwind_start()
In reply to Greg Kroah-HartmanFrom: Josh Poimboeuf <[email protected]>
commit 71c95825289f585014fe9741b051d32a7a916680 upstream.
The unwind_state 'error' field is used to inform the reliable unwinding code that the stack trace can't be trusted. Set this field for all errors in __unwind_start().
Also, move the zeroing out of the unwind_state struct to before the ORC table initialization check, to prevent the caller from reading uninitialized data if the ORC table is corrupted.
--- arch/x86/kernel/unwind_orc.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
arch/x86/kernel/unwind_orc.c +9 -7
@@ -611,23 +611,23 @@ EXPORT_SYMBOL_GPL(unwind_next_frame);void __unwind_start (struct unwind_state *state,struct task_struct *task,struct pt_regs *regs,unsigned long *first_frame) { -if (!orc_init) - goto done; -memset (state,0 ,sizeof (*state)); state->task = task; +if (!orc_init) + goto err; +/* * Refuse to unwind the stack of a task while it's executing on another * CPU. This check is racy, but that's ok: the unwinder has other * checks to prevent it from going off the rails. */ if (task_on_another_cpu (task)) - goto done; + goto err;if (regs) {if (user_mode (regs)) - goto done; + goto the_end; state->ip = regs->ip; state->sp = regs->sp;
@@ -660,6 +660,7 @@ void __unwind_start(struct unwind_state* generate some kind of backtrace if this happens. */ void *next_page = (void *)PAGE_ALIGN ((unsigned long )state->sp); + state->error = true;if (get_stack_info (next_page, state->task, &state->stack_info, &state->stack_mask))return ;
@@ -685,8 +686,9 @@ void __unwind_start(struct unwind_statereturn ; -done: +err: + state->error = true; +the_end: state->stack_info.type =STACK_TYPE_UNKNOWN ; -return ; }EXPORT_SYMBOL_GPL (__unwind_start);
Greg Kroah-Hartman
maintainerPATCH 160/194 exec: Move would_dump into flush_old_exec
In reply to Greg Kroah-HartmanFrom: Eric W. Biederman <[email protected]>
commit f87d1c9559164294040e58f5e3b74a162bf7c6e8 upstream.
I goofed when I added mm->user_ns support to would_dump. I missed the fact that in the case of binfmt_loader, binfmt_em86, binfmt_misc, and binfmt_script bprm->file is reassigned. Which made the move of would_dump from setup_new_exec to __do_execve_file before exec_binprm incorrect as it can result in would_dump running on the script instead of the interpreter of the script.
The net result is that the code stopped making unreadable interpreters undumpable. Which allows them to be ptraced and written to disk without special permissions. Oops.
The move was necessary because the call in set_new_exec was after bprm->mm was no longer valid.
To correct this mistake move the misplaced would_dump from __do_execve_file into flos_old_exec, before exec_mmap is called.
I tested and confirmed that without this fix I can attach with gdb to a script with an unreadable interpreter, and with this fix I can not.
--- fs/exec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/exec.c +2 -2
@@ -1277,6 +1277,8 @@ int flush_old_exec(struct linux_binprm **/ set_mm_exe_file (bprm->mm, bprm->file); +would_dump (bprm, bprm->file); +/* * Release all of the old mmap stuff */
@@ -1820,8 +1822,6 @@ static int __do_execve_file(int fd, struif (retval <0 ) goto out; -would_dump (bprm, bprm->file); - retval =exec_binprm (bprm);if (retval <0 ) goto out;
Greg Kroah-Hartman
maintainerPATCH 161/194 clk: rockchip: fix incorrect configuration of rk3228 aclk_gpu* clocks
In reply to Greg Kroah-HartmanFrom: Justin Swartz <[email protected]>
commit cec9d101d70a3509da9bd2e601e0b242154ce616 upstream.
The following changes prevent the unrecoverable freezes and rcu_sched stall warnings experienced in each of my attempts to take advantage of lima.
Replace the COMPOSITE_NOGATE definition of aclk_gpu_pre with a COMPOSITE that retains the selection of HDMIPHY as the PLL source, but instead makes uses of the aclk_gpu PLL source gate and parent names defined by mux_pll_src_4plls_p rather than mux_aclk_gpu_pre_p.
Remove the now unused mux_aclk_gpu_pre_p and the four named but also unused definitions (cpll_gpu, gpll_gpu, hdmiphy_gpu and usb480m_gpu) of the aclk_gpu PLL source gate.
Use the correct gate offset for aclk_gpu and aclk_gpu_noc.
--- drivers/clk/rockchip/clk-rk3228.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-)
drivers/clk/rockchip/clk-rk3228.c +4 -13
@@ -156,8 +156,6 @@ PNAME(mux_i2s_out_p) = { "i2s1_pre", "xPNAME (mux_i2s2_p) = {"i2s2_src" ,"i2s2_frac" ,"xin12m" };PNAME (mux_sclk_spdif_p) = {"sclk_spdif_src" ,"spdif_frac" ,"xin12m" }; -PNAME (mux_aclk_gpu_pre_p) = {"cpll_gpu" ,"gpll_gpu" ,"hdmiphy_gpu" ,"usb480m_gpu" }; -PNAME (mux_uart0_p) = {"uart0_src" ,"uart0_frac" ,"xin24m" };PNAME (mux_uart1_p) = {"uart1_src" ,"uart1_frac" ,"xin24m" };PNAME (mux_uart2_p) = {"uart2_src" ,"uart2_frac" ,"xin24m" };
@@ -468,16 +466,9 @@ static struct rockchip_clk_branch rk3228 RK2928_CLKSEL_CON(24), 6, 10, DFLAGS, RK2928_CLKGATE_CON(2), 8, GFLAGS), -GATE (0 ,"cpll_gpu" ,"cpll" ,0 , -RK2928_CLKGATE_CON (3 ),13 ,GFLAGS ), -GATE (0 ,"gpll_gpu" ,"gpll" ,0 , -RK2928_CLKGATE_CON (3 ),13 ,GFLAGS ), -GATE (0 ,"hdmiphy_gpu" ,"hdmiphy" ,0 , -RK2928_CLKGATE_CON (3 ),13 ,GFLAGS ), -GATE (0 ,"usb480m_gpu" ,"usb480m" ,0 , +COMPOSITE (0 ,"aclk_gpu_pre" , mux_pll_src_4plls_p,0 , +RK2928_CLKSEL_CON (34 ),5 ,2 ,MFLAGS ,0 ,5 ,DFLAGS ,RK2928_CLKGATE_CON (3 ),13 ,GFLAGS ), -COMPOSITE_NOGATE (0 ,"aclk_gpu_pre" , mux_aclk_gpu_pre_p,0 , -RK2928_CLKSEL_CON (34 ),5 ,2 ,MFLAGS ,0 ,5 ,DFLAGS ), COMPOSITE(SCLK_SPI0, "sclk_spi0", mux_pll_src_2plls_p, 0, RK2928_CLKSEL_CON(25), 8, 1, MFLAGS, 0, 7, DFLAGS,
@@ -582,8 +573,8 @@ static struct rockchip_clk_branch rk3228GATE (0 ,"pclk_peri_noc" ,"pclk_peri" ,CLK_IGNORE_UNUSED ,RK2928_CLKGATE_CON (12 ),2 ,GFLAGS ),/* PD_GPU */ -GATE (ACLK_GPU ,"aclk_gpu" ,"aclk_gpu_pre" ,0 ,RK2928_CLKGATE_CON (13 ),14 ,GFLAGS ), -GATE (0 ,"aclk_gpu_noc" ,"aclk_gpu_pre" ,0 ,RK2928_CLKGATE_CON (13 ),15 ,GFLAGS ), +GATE (ACLK_GPU ,"aclk_gpu" ,"aclk_gpu_pre" ,0 ,RK2928_CLKGATE_CON (7 ),14 ,GFLAGS ), +GATE (0 ,"aclk_gpu_noc" ,"aclk_gpu_pre" ,0 ,RK2928_CLKGATE_CON (7 ),15 ,GFLAGS ),/* PD_BUS */ GATE(0, "sclk_initmem_mbist", "aclk_cpu", 0, RK2928_CLKGATE_CON(8), 1, GFLAGS),
Greg Kroah-Hartman
maintainerPATCH 162/194 dwc3: Remove check for HWO flag in dwc3_gadget_ep_reclaim_trb_sg()
In reply to Greg Kroah-HartmanFrom: John Stultz <[email protected]>
commit 00e21763f2c8cab21b7befa52996d1b18bde5c42 upstream.
The check for the HWO flag in dwc3_gadget_ep_reclaim_trb_sg() causes us to break out of the loop before we call dwc3_gadget_ep_reclaim_completed_trb(), which is what likely should be clearing the HWO flag.
This can cause odd behavior where we never reclaim all the trbs in the sg list, so we never call giveback on a usb req, and that will causes transfer stalls.
This effectively resovles the adb stalls seen on HiKey960 after userland changes started only using AIO in adbd.
--- drivers/usb/dwc3/gadget.c | 3 --- 1 file changed, 3 deletions(-)
drivers/usb/dwc3/gadget.c +0 -3
@@ -2483,9 +2483,6 @@ static int dwc3_gadget_ep_reclaim_trb_sgfor_each_sg (sg, s, pending, i) { trb = &dep->trb_pool[dep->trb_dequeue]; -if (trb->ctrl &DWC3_TRB_CTRL_HWO ) -break ; - req->sg =sg_next (s); req->num_pending_sgs--;
Greg Kroah-Hartman
maintainerPATCH 163/194 fanotify: fix merging marks masks with FAN_ONDIR
In reply to Greg Kroah-HartmanFrom: Amir Goldstein <[email protected]>
commit 55bf882c7f13dda8bbe624040c6d5b4fbb812d16 upstream.
Change the logic of FAN_ONDIR in two ways that are similar to the logic of FAN_EVENT_ON_CHILD, that was fixed in commit 54a307ba8d3c ("fanotify:
fix logic of events on child"):
1. The flag is meaningless in ignore mask
2. The flag refers only to events in the mask of the mark where it is set
This is what the fanotify_mark.2 man page says about FAN_ONDIR:
"Without this flag, only events for files are created." It doesn't say anything about setting this flag in ignore mask to stop getting events on directories nor can I think of any setup where this capability would be useful.
Currently, when marks masks are merged, the FAN_ONDIR flag set in one mark affects the events that are set in another mark's mask and this behavior causes unexpected results. For example, a user adds a mark on a directory with mask FAN_ATTRIB | FAN_ONDIR and a mount mark with mask FAN_OPEN (without FAN_ONDIR). An opendir() of that directory (which is inside that mount) generates a FAN_OPEN event even though neither of the marks requested to get open events on directories.
--- fs/notify/fanotify/fanotify.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
fs/notify/fanotify/fanotify.c +7 -4
@@ -172,6 +172,13 @@ static u32 fanotify_group_event_mask(strcontinue ; mark = iter_info->marks[type];/* +* If the event is on dir and this mark doesn't care about +* events on dir, don't send it! +*/ +if (event_mask &FS_ISDIR && !(mark->mask &FS_ISDIR )) +continue ; + +/* * If the event is for a child and this mark doesn't care about * events on a child, don't send it! */
@@ -203,10 +210,6 @@ static u32 fanotify_group_event_mask(str user_mask &= ~FAN_ONDIR ; } -if (event_mask &FS_ISDIR && - !(marks_mask &FS_ISDIR & ~marks_ignored_mask)) -return 0 ; -return test_mask & user_mask; }
Greg Kroah-Hartman
maintainerPATCH 164/194 arm64: dts: meson-g12b-ugoos-am6: fix usb vbus-supply
In reply to Greg Kroah-HartmanFrom: Neil Armstrong <[email protected]>
commit 4e025fd91ba32a16ed8131158aa63cd37d141cbb upstream.
The USB supply used the wrong property, fixing:meson-g12b-ugoos-am6.dt.yaml: usb@ffe09000: 'vbus-regulator' does not match any of the regexes: '^usb@[0-9a-f]+$', 'pinctrl-[0-9]+'
--- arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts +1 -1
@@ -545,7 +545,7 @@ &usb { status = "okay"; dr_mode = "host"; - vbus-regulator = <&usb_pwr_en>; + vbus-supply = <&usb_pwr_en>; }; &usb2_phy0 {
Greg Kroah-Hartman
maintainerPATCH 165/194 usb: gadget: tegra-xudc: Fix idle suspend/resume
In reply to Greg Kroah-HartmanFrom: Thierry Reding <[email protected]>
commit 0534d40160cb9505073b0ecf5e7210daee319a66 upstream.
When the XUDC device is idle (i.e. powergated), care must be taken not to access any registers because that would lead to a crash.
Move the call to tegra_xudc_device_mode_off() into the same conditional as the tegra_xudc_powergate() call to make sure we only force device mode off if the XUDC is actually powered up.
--- drivers/usb/gadget/udc/tegra-xudc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/usb/gadget/udc/tegra-xudc.c +4 -4
@@ -3740,11 +3740,11 @@ static int __maybe_unused tegra_xudc_susflush_work (&xudc->usb_role_sw_work); -/* Forcibly disconnect before powergating. */ -tegra_xudc_device_mode_off (xudc); - -if (!pm_runtime_status_suspended (dev)) +if (!pm_runtime_status_suspended (dev)) { +/* Forcibly disconnect before powergating. */ +tegra_xudc_device_mode_off (xudc);tegra_xudc_powergate (xudc); + }pm_runtime_disable (dev);
Greg Kroah-Hartman
maintainerPATCH 166/194 usb: gadget: net2272: Fix a memory leak in an error handling path in net2272_plat_probe()
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
commit ccaef7e6e354fb65758eaddd3eae8065a8b3e295 upstream.
'dev' is allocated in 'net2272_probe_init()'. It must be freed in the error handling path, as already done in the remove function (i.e. 'net2272_plat_remove()')
--- drivers/usb/gadget/udc/net2272.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/usb/gadget/udc/net2272.c +2 -0
@@ -2647,6 +2647,8 @@ net2272_plat_probe(struct platform_devic err_req:release_mem_region (base, len); err: +kfree (dev); +return ret; }
Greg Kroah-Hartman
maintainerPATCH 167/194 usb: gadget: audio: Fix a missing error return value in audio_bind()
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
commit 19b94c1f9c9a16d41a8de3ccbdb8536cf1aecdbf upstream.
If 'usb_otg_descriptor_alloc()' fails, we must return an error code, not 0.
--- drivers/usb/gadget/legacy/audio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/usb/gadget/legacy/audio.c +3 -1
@@ -300,8 +300,10 @@ static int audio_bind(struct usb_composistruct usb_descriptor_header *usb_desc; usb_desc =usb_otg_descriptor_alloc (cdev->gadget); -if (!usb_desc) +if (!usb_desc) { + status = -ENOMEM ; goto fail; + }usb_otg_descriptor_init (cdev->gadget, usb_desc); otg_desc[0 ] = usb_desc; otg_desc[1 ] =NULL ;
Greg Kroah-Hartman
maintainerPATCH 168/194 usb: gadget: legacy: fix error return code in gncm_bind()
In reply to Greg Kroah-HartmanFrom: Wei Yongjun <[email protected]>
commit e27d4b30b71c66986196d8a1eb93cba9f602904a upstream.
If 'usb_otg_descriptor_alloc()' fails, we must return a negative error code -ENOMEM, not 0.
--- drivers/usb/gadget/legacy/ncm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/usb/gadget/legacy/ncm.c +3 -1
@@ -156,8 +156,10 @@ static int gncm_bind(struct usb_compositstruct usb_descriptor_header *usb_desc; usb_desc =usb_otg_descriptor_alloc (gadget); -if (!usb_desc) +if (!usb_desc) { + status = -ENOMEM ; goto fail; + }usb_otg_descriptor_init (gadget, usb_desc); otg_desc[0 ] = usb_desc; otg_desc[1 ] =NULL ;
Greg Kroah-Hartman
maintainerPATCH 169/194 usb: gadget: legacy: fix error return code in cdc_bind()
In reply to Greg Kroah-HartmanFrom: Wei Yongjun <[email protected]>
commit e8f7f9e3499a6d96f7f63a4818dc7d0f45a7783b upstream.
If 'usb_otg_descriptor_alloc()' fails, we must return a negative error code -ENOMEM, not 0.
--- drivers/usb/gadget/legacy/cdc2.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/usb/gadget/legacy/cdc2.c +3 -1
@@ -179,8 +179,10 @@ static int cdc_bind(struct usb_compositestruct usb_descriptor_header *usb_desc; usb_desc =usb_otg_descriptor_alloc (gadget); -if (!usb_desc) +if (!usb_desc) { + status = -ENOMEM ; goto fail1; + }usb_otg_descriptor_init (gadget, usb_desc); otg_desc[0 ] = usb_desc; otg_desc[1 ] =NULL ;
Greg Kroah-Hartman
maintainerPATCH 170/194 Revert "ALSA: hda/realtek: Fix pop noise on ALC225"
In reply to Greg Kroah-HartmanFrom: Kai-Heng Feng <[email protected]>
commit f41224efcf8aafe80ea47ac870c5e32f3209ffc8 upstream.
This reverts commit 3b36b13d5e69d6f51ff1c55d1b404a74646c9757.
Enable power save node breaks some systems with ACL225. Revert the patch and use a platform specific quirk for the original issue isntead.
--- sound/pci/hda/patch_realtek.c | 2 -- 1 file changed, 2 deletions(-)
sound/pci/hda/patch_realtek.c +0 -2
@@ -8121,8 +8121,6 @@ static int patch_alc269(struct hda_codec spec->gen.mixer_nid =0 ;break ;case 0x10ec0225 : - codec->power_save_node =1 ; -/* fall through */ case 0x10ec0295 :case 0x10ec0299 : spec->codec_variant =ALC269_TYPE_ALC225 ;
Greg Kroah-Hartman
maintainerPATCH 171/194 clk: ti: clkctrl: Fix Bad of_node_put within clkctrl_get_name
In reply to Greg Kroah-HartmanFrom: Tero Kristo <[email protected]>
commit e1f9e0d28ff025564dfdb1001a7839b4af5db2e2 upstream.
clkctrl_get_name incorrectly calls of_node_put when it is not really doing of_node_get. This causes a boot time warning later on:
[ 0.000000] OF: ERROR: Bad of_node_put() on /ocp/interconnect@4a000000/segmen
t@0/target-module@5000/cm_core_aon@0/ipu-cm@500/ipu1-clkctrl@20
Fix by dropping the of_node_put from the function.
--- drivers/clk/ti/clkctrl.c | 1 - 1 file changed, 1 deletion(-)
drivers/clk/ti/clkctrl.c +0 -1
@@ -461,7 +461,6 @@ static char * __init clkctrl_get_name(streturn name; } } -of_node_put (np);return NULL ; }
Greg Kroah-Hartman
maintainerPATCH 172/194 clk: Unlink clock if failed to prepare or enable
In reply to Greg Kroah-HartmanFrom: Marc Zyngier <[email protected]>
commit 018d4671b9bbd4a5c55cf6eab3e1dbc70a50b66e upstream.
On failing to prepare or enable a clock, remove the core structure from the list it has been inserted as it is about to be freed.
This otherwise leads to random crashes when subsequent clocks get registered, during which parsing of the clock tree becomes adventurous.
Observed with QEMU's RPi-3 emulation.
--- drivers/clk/clk.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/clk/clk.c +3 -0
@@ -3512,6 +3512,9 @@ static int __clk_core_init(struct clk_co out:clk_pm_runtime_put (core); unlock: +if (ret) +hlist_del_init (&core->child_node); +clk_prepare_unlock ();if (!ret)
Greg Kroah-Hartman
maintainerPATCH 173/194 arm64: dts: meson-g12b-khadas-vim3: add missing frddr_a status property
In reply to Greg Kroah-HartmanFrom: Neil Armstrong <[email protected]>
commit 5ac0869fb39b1c1ba84d4d75c550f82e0bf44c96 upstream.
In the process of moving the VIM3 audio nodes to a G12B specific dtsi for enabling the SM1 based VIM3L, the frddr_a status = "okay" property got dropped.
This re-enables the frddr_a node to fix audio support.
--- arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi +4 -0
@@ -152,6 +152,10 @@ clock-latency = <50000>; }; +&frddr_a { + status = "okay"; +}; + &frddr_b { status = "okay"; };
Greg Kroah-Hartman
maintainerPATCH 174/194 arm64: dts: qcom: msm8996: Reduce vdd_apc voltage
In reply to Greg Kroah-HartmanFrom: Bjorn Andersson <[email protected]>
commit 28810eecae08f9458a44831978e36f14ed182c80 upstream.
Some msm8996 based devices are unstable when run with VDD_APC of 1.23V, which is listed as the maximum voltage in "Turbo" mode. Given that the CPU cluster is not run in "Turbo" mode, reduce this to 0.98V - the maximum voltage for nominal operation.
--- arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +2 -2
@@ -658,8 +658,8 @@ s11 { qcom,saw-leader; regulator-always-on; - regulator-min-microvolt = <1230000>; - regulator-max-microvolt = <1230000>; + regulator-min-microvolt = <980000>; + regulator-max-microvolt = <980000>; }; };
Greg Kroah-Hartman
maintainerPATCH 175/194 arm64: dts: meson-g12-common: fix dwc2 clock names
In reply to Greg Kroah-HartmanFrom: Neil Armstrong <[email protected]>
commit e4f634d812634067b0c661af2e3cecfd629c89b8 upstream.
Use the correct dwc2 clock name.
--- arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +1 -1
@@ -2204,7 +2204,7 @@ reg = <0x0 0xff400000 0x0 0x40000>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clkc CLKID_USB1_DDR_BRIDGE>; - clock-names = "ddr"; + clock-names = "otg"; phys = <&usb2_phy1>; phy-names = "usb2-phy"; dr_mode = "peripheral";
Greg Kroah-Hartman
maintainerPATCH 176/194 arm64: dts: rockchip: Replace RK805 PMIC node name with "pmic" on rk3328 boards
In reply to Greg Kroah-HartmanFrom: Chen-Yu Tsai <[email protected]>
commit 83b994129fb4c18a8460fd395864a28740e5e7fb upstream.
In some board device tree files, "rk805" was used for the RK805 PMIC's node name. However the policy for device trees is that generic names should be used.
Replace the "rk805" node name with the generic "pmic" name.
--- arch/arm64/boot/dts/rockchip/rk3328-evb.dts | 2 +- arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/rockchip/rk3328-evb.dts +1 -1
@@ -92,7 +92,7 @@ &i2c1 { status = "okay"; - rk805: rk805@18 { + rk805: pmic@18 { compatible = "rockchip,rk805"; reg = <0x18>; interrupt-parent = <&gpio2>;
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +1 -1
@@ -169,7 +169,7 @@ &i2c1 { status = "okay"; - rk805: rk805@18 { + rk805: pmic@18 { compatible = "rockchip,rk805"; reg = <0x18>; interrupt-parent = <&gpio2>;
Greg Kroah-Hartman
maintainerPATCH 177/194 arm64: dts: rockchip: Rename dwc3 device nodes on rk3399 to make dtc happy
In reply to Greg Kroah-HartmanFrom: Chen-Yu Tsai <[email protected]>
commit 190c7f6fd43a776d4a6da1dac44408104649e9b7 upstream.
The device tree compiler complains that the dwc3 nodes have regs properties but no matching unit addresses.
Add the unit addresses to the device node name. While at it, also rename the nodes from "dwc3" to "usb", as guidelines require device nodes have generic names.
--- arch/arm64/boot/dts/rockchip/rk3399.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/rockchip/rk3399.dtsi +2 -2
@@ -410,7 +410,7 @@ reset-names = "usb3-otg"; status = "disabled"; - usbdrd_dwc3_0: dwc3 { + usbdrd_dwc3_0: usb@fe800000 { compatible = "snps,dwc3"; reg = <0x0 0xfe800000 0x0 0x100000>; interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
@@ -446,7 +446,7 @@ reset-names = "usb3-otg"; status = "disabled"; - usbdrd_dwc3_1: dwc3 { + usbdrd_dwc3_1: usb@fe900000 { compatible = "snps,dwc3"; reg = <0x0 0xfe900000 0x0 0x100000>; interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
Greg Kroah-Hartman
maintainerPATCH 178/194 arm64: dts: imx8mn: Change SDMA1 ahb clock for imx8mn
In reply to Greg Kroah-HartmanFrom: Adam Ford <[email protected]>
commit 15ddc3e17aec0de4c69d595b873e184432b9791d upstream.
Using SDMA1 with UART1 is causing a "Timeout waiting for CH0" error. This patch changes to ahb clock from SDMA1_ROOT to AHB which fixes the timeout error.
--- arch/arm64/boot/dts/freescale/imx8mn.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/freescale/imx8mn.dtsi +1 -1
@@ -661,7 +661,7 @@ reg = <0x30bd0000 0x10000>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk IMX8MN_CLK_SDMA1_ROOT>, - <&clk IMX8MN_CLK_SDMA1_ROOT>; + <&clk IMX8MN_CLK_AHB>; clock-names = "ipg", "ahb"; #dma-cells = <3>; fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
Greg Kroah-Hartman
maintainerPATCH 179/194 ARM: dts: r8a73a4: Add missing CMT1 interrupts
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
commit 0f739fdfe9e5ce668bd6d3210f310df282321837 upstream.
The R-Mobile APE6 Compare Match Timer 1 generates 8 interrupts, one for each channel, but currently only 1 is described.
Fix this by adding the missing interrupts.
--- arch/arm/boot/dts/r8a73a4.dtsi | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
arch/arm/boot/dts/r8a73a4.dtsi +8 -1
@@ -131,7 +131,14 @@ cmt1: timer@e6130000 { compatible = "renesas,r8a73a4-cmt1", "renesas,rcar-gen2-cmt1"; reg = <0 0xe6130000 0 0x1004>; - interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp3_clks R8A73A4_CLK_CMT1>; clock-names = "fck"; power-domains = <&pd_c5>;
Greg Kroah-Hartman
maintainerPATCH 180/194 arm64: dts: renesas: r8a77980: Fix IPMMU VIP[01] nodes
In reply to Greg Kroah-HartmanFrom: Yoshihiro Shimoda <[email protected]>
commit f4d71c6ea9e58c07dd4d02d09c5dd9bb780ec4b1 upstream.
Missing the renesas,ipmmu-main property on ipmmu_vip[01] nodes.
--- arch/arm64/boot/dts/renesas/r8a77980.dtsi | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/renesas/r8a77980.dtsi +2 -0
@@ -1318,6 +1318,7 @@ ipmmu_vip0: mmu@e7b00000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe7b00000 0 0x1000>; + renesas,ipmmu-main = <&ipmmu_mm 4>; power-domains = <&sysc R8A77980_PD_ALWAYS_ON>; #iommu-cells = <1>; };
@@ -1325,6 +1326,7 @@ ipmmu_vip1: mmu@e7960000 { compatible = "renesas,ipmmu-r8a77980"; reg = <0 0xe7960000 0 0x1000>; + renesas,ipmmu-main = <&ipmmu_mm 11>; power-domains = <&sysc R8A77980_PD_ALWAYS_ON>; #iommu-cells = <1>; };
Greg Kroah-Hartman
maintainerPATCH 181/194 ARM: dts: r8a7740: Add missing extal2 to CPG node
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
commit e47cb97f153193d4b41ca8d48127da14513d54c7 upstream.
The Clock Pulse Generator (CPG) device node lacks the extal2 clock. This may lead to a failure registering the "r" clock, or to a wrong parent for the "usb24s" clock, depending on MD_CK2 pin configuration and boot loader CPG_USBCKCR register configuration.
This went unnoticed, as this does not affect the single upstream board configuration, which relies on the first clock input only.
--- arch/arm/boot/dts/r8a7740.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/r8a7740.dtsi +1 -1
@@ -479,7 +479,7 @@ cpg_clocks: cpg_clocks@e6150000 { compatible = "renesas,r8a7740-cpg-clocks"; reg = <0xe6150000 0x10000>; - clocks = <&extal1_clk>, <&extalr_clk>; + clocks = <&extal1_clk>, <&extal2_clk>, <&extalr_clk>; #clock-cells = <1>; clock-output-names = "system", "pllc0", "pllc1", "pllc2", "r",
Greg Kroah-Hartman
maintainerPATCH 182/194 dt-bindings: dma: fsl-edma: fix ls1028a-edma compatible
In reply to Greg Kroah-HartmanFrom: Michael Walle <[email protected]>
commit d94a05f87327143f94f67dd256932163ac2bcd65 upstream.
The bootloader will fix up the IOMMU entries only on nodes with the compatible "fsl,vf610-edma". Thus make this compatible string mandatory for the ls1028a-edma.
While at it, fix the "fsl,fsl," typo.
--- Documentation/devicetree/bindings/dma/fsl-edma.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/dma/fsl-edma.txt +2 -1
@@ -10,7 +10,8 @@ Required properties: - compatible : - "fsl,vf610-edma" for eDMA used similar to that on Vybrid vf610 SoC - "fsl,imx7ulp-edma" for eDMA2 used similar to that on i.mx7ulp - - "fsl,fsl,ls1028a-edma" for eDMA used similar to that on Vybrid vf610 SoC + - "fsl,ls1028a-edma" followed by "fsl,vf610-edma" for eDMA used on the + LS1028A SoC. - reg : Specifies base physical address(s) and size of the eDMA registers. The 1st region is eDMA control register's address and size. The 2nd and the 3rd regions are programmable channel multiplexing
Greg Kroah-Hartman
maintainerPATCH 183/194 SUNRPC: Revert 241b1f419f0e ("SUNRPC: Remove xdr_buf_trim()")
In reply to Greg Kroah-HartmanFrom: Chuck Lever <[email protected]>
commit 0a8e7b7d08466b5fc52f8e96070acc116d82a8bb upstream.
I've noticed that when krb5i or krb5p security is in use, retransmitted requests are missing the server's duplicate reply cache. The computed checksum on the retransmitted request does not match the cached checksum, resulting in the server performing the retransmitted request again instead of returning the cached reply.
The assumptions made when removing xdr_buf_trim() were not correct. In the send paths, the upper layer has already set the segment lengths correctly, and shorting the buffer's content is simply a matter of reducing buf->len.
xdr_buf_trim() is the right answer in the receive/unwrap path on both the client and the server. The buffer segment lengths have to be shortened one-by-one.
On the server side in particular, head.iov_len needs to be updated correctly to enable nfsd_cache_csum() to work correctly. The simple buf->len computation doesn't do that, and that results in checksumming stale data in the buffer.
The problem isn't noticed until there's significant instability of the RPC transport. At that point, the reliability of retransmit detection on the server becomes crucial.
--- include/linux/sunrpc/xdr.h | 1 net/sunrpc/auth_gss/gss_krb5_wrap.c | 7 ++---- net/sunrpc/auth_gss/svcauth_gss.c | 2 - net/sunrpc/xdr.c | 41 ++++++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 5 deletions(-)
include/linux/sunrpc/xdr.h +1 -0
@@ -184,6 +184,7 @@ xdr_adjust_iovec(struct kvec *iov, __be3extern void xdr_shift_buf (struct xdr_buf *,size_t );extern void xdr_buf_from_iov (struct kvec *,struct xdr_buf *);extern int xdr_buf_subsegment (struct xdr_buf *,struct xdr_buf *,unsigned int ,unsigned int ); +extern void xdr_buf_trim (struct xdr_buf *,unsigned int );extern int xdr_buf_read_mic (struct xdr_buf *,struct xdr_netobj *,unsigned int );extern int read_bytes_from_xdr_buf (struct xdr_buf *,unsigned int ,void *,unsigned int );extern int write_bytes_to_xdr_buf (struct xdr_buf *,unsigned int ,void *,unsigned int );
net/sunrpc/auth_gss/gss_krb5_wrap.c +3 -4
@@ -580,15 +580,14 @@ gss_unwrap_kerberos_v2(struct krb5_ctx **/ movelen = min_t(unsigned int, buf->head[0].iov_len, len); movelen -= offset +GSS_KRB5_TOK_HDR_LEN + headskip; -if (offset +GSS_KRB5_TOK_HDR_LEN + headskip + movelen > - buf->head[0 ].iov_len) -return GSS_S_FAILURE ; +BUG_ON (offset +GSS_KRB5_TOK_HDR_LEN + headskip + movelen > + buf->head[0 ].iov_len);memmove (ptr, ptr +GSS_KRB5_TOK_HDR_LEN + headskip, movelen); buf->head[0 ].iov_len -=GSS_KRB5_TOK_HDR_LEN + headskip; buf->len = len -GSS_KRB5_TOK_HDR_LEN + headskip;/* Trim off the trailing "extra count" and checksum blob */ - buf->len -= ec +GSS_KRB5_TOK_HDR_LEN + tailskip; +xdr_buf_trim (buf, ec +GSS_KRB5_TOK_HDR_LEN + tailskip); *align =XDR_QUADLEN (GSS_KRB5_TOK_HDR_LEN + headskip); *slack = *align +XDR_QUADLEN (ec +GSS_KRB5_TOK_HDR_LEN + tailskip);
net/sunrpc/auth_gss/svcauth_gss.c +1 -1
@@ -900,7 +900,7 @@ unwrap_integ_data(struct svc_rqst *rqstpif (svc_getnl (&buf->head[0 ]) != seq) goto out;/* trim off the mic and padding at the end before returning */ - buf->len -=4 +round_up_to_quad (mic.len); +xdr_buf_trim (buf,round_up_to_quad (mic.len) +4 ); stat =0 ; out:kfree (mic.data);
net/sunrpc/xdr.c +41 -0
47 lines not on this page · raw message
Greg Kroah-Hartman
maintainerPATCH 184/194 bpf: Fix sk_psock refcnt leak when receiving message
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
commit 18f02ad19e2c2a1d9e1d55a4e1c0cbf51419151c upstream.
tcp_bpf_recvmsg() invokes sk_psock_get(), which returns a reference of the specified sk_psock object to "psock" with increased refcnt.
When tcp_bpf_recvmsg() returns, local variable "psock" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The reference counting issue happens in several exception handling paths of tcp_bpf_recvmsg(). When those error scenarios occur such as "flags" includes MSG_ERRQUEUE, the function forgets to decrease the refcnt increased by sk_psock_get(), causing a refcnt leak.
Fix this issue by calling sk_psock_put() or pulling up the error queue read handling when those error scenarios occur.
--- net/ipv4/tcp_bpf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
net/ipv4/tcp_bpf.c +6 -3
@@ -121,14 +121,17 @@ int tcp_bpf_recvmsg(struct sock *sk, strstruct sk_psock *psock;int copied, ret; +if (unlikely (flags &MSG_ERRQUEUE )) +return inet_recv_error (sk, msg, len, addr_len); + psock =sk_psock_get (sk);if (unlikely (!psock))return tcp_recvmsg (sk, msg, len, nonblock, flags, addr_len); -if (unlikely (flags &MSG_ERRQUEUE )) -return inet_recv_error (sk, msg, len, addr_len);if (!skb_queue_empty (&sk->sk_receive_queue) && -sk_psock_queue_empty (psock)) +sk_psock_queue_empty (psock)) { +sk_psock_put (sk, psock);return tcp_recvmsg (sk, msg, len, nonblock, flags, addr_len); + }lock_sock (sk); msg_bytes_ready: copied =__tcp_bpf_recvmsg (sk, psock, msg, len, flags);
Greg Kroah-Hartman
maintainerPATCH 185/194 powerpc/uaccess: Evaluate macro arguments once, before user access is allowed
In reply to Greg Kroah-HartmanFrom: Nicholas Piggin <[email protected]>
commit d02f6b7dab8228487268298ea1f21081c0b4b3eb upstream.
get/put_user() can be called with nontrivial arguments. fs/proc/page.c has a good example:
if (put_user(stable_page_flags(ppage), out)) {stable_page_flags() is quite a lot of code, including spin locks in the page allocator.
Ensure these arguments are evaluated before user access is allowed.
This improves security by reducing code with access to userspace, but it also fixes a PREEMPT bug with KUAP on powerpc/64s:stable_page_flags() is currently called with AMR set to allow writes, it ends up calling spin_unlock(), which can call preempt_schedule. But the task switch code can not be called with AMR set (it relies on interrupts saving the register), so this blows up.
It's fine if the code inside allow_user_access() is preemptible, because a timer or IPI will save the AMR, but it's not okay to explicitly cause a reschedule.
--- arch/powerpc/include/asm/uaccess.h | 49 ++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 14 deletions(-)
arch/powerpc/include/asm/uaccess.h +35 -14
@@ -166,13 +166,17 @@ do { \ ({ \long __pu_err; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ + __typeof__(*(ptr)) __pu_val = (x); \ +__typeof__ (size) __pu_size = (size); \ + \if (!is_kernel_addr ((unsigned long )__pu_addr)) \might_fault (); \ -__chk_user_ptr (ptr); \ +__chk_user_ptr (__pu_addr); \if (do_allow) \ -__put_user_size ((x), __pu_addr, (size), __pu_err); \ +__put_user_size (__pu_val, __pu_addr, __pu_size, __pu_err); \else \ -__put_user_size_allowed ((x), __pu_addr, (size), __pu_err); \ +__put_user_size_allowed (__pu_val, __pu_addr, __pu_size, __pu_err); \ + \ __pu_err; \ })
@@ -180,9 +184,13 @@ do { \ ({ \long __pu_err = -EFAULT ; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ + __typeof__(*(ptr)) __pu_val = (x); \ +__typeof__ (size) __pu_size = (size); \ + \might_fault (); \ -if (access_ok (__pu_addr, size)) \ -__put_user_size ((x), __pu_addr, (size), __pu_err); \ +if (access_ok (__pu_addr, __pu_size)) \ +__put_user_size (__pu_val, __pu_addr, __pu_size, __pu_err); \ + \ __pu_err; \ })
@@ -190,8 +198,12 @@ do { \ ({ \long __pu_err; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ -__chk_user_ptr (ptr); \ -__put_user_size ((x), __pu_addr, (size), __pu_err); \ + __typeof__(*(ptr)) __pu_val = (x); \ +__typeof__ (size) __pu_size = (size); \ + \ +__chk_user_ptr (__pu_addr); \ +__put_user_size (__pu_val, __pu_addr, __pu_size, __pu_err); \ + \ __pu_err; \ })
@@ -283,15 +295,18 @@ do { \long __gu_err; \ __long_type(*(ptr)) __gu_val; \ __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ -__chk_user_ptr (ptr); \ +__typeof__ (size) __gu_size = (size); \ + \ +__chk_user_ptr (__gu_addr); \if (!is_kernel_addr ((unsigned long )__gu_addr)) \might_fault (); \barrier_nospec (); \if (do_allow) \ -__get_user_size (__gu_val, __gu_addr, (size), __gu_err); \ +__get_user_size (__gu_val, __gu_addr, __gu_size, __gu_err); \else \ -__get_user_size_allowed (__gu_val, __gu_addr, (size), __gu_err); \ +__get_user_size_allowed (__gu_val, __gu_addr, __gu_size, __gu_err); \ (x) = (__typeof__ (*(ptr )))__gu_val; \ + \ __gu_err; \ })
@@ -300,12 +315,15 @@ do { \long __gu_err = -EFAULT ; \ __long_type(*(ptr)) __gu_val = 0; \ __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ +__typeof__ (size) __gu_size = (size); \ + \might_fault (); \ -if (access_ok (__gu_addr, (size))) { \ +if (access_ok (__gu_addr, __gu_size)) { \barrier_nospec (); \ -__get_user_size (__gu_val, __gu_addr, (size), __gu_err); \ +__get_user_size (__gu_val, __gu_addr, __gu_size, __gu_err); \ } \ (x) = (__force __typeof__(*(ptr)))__gu_val; \ + \ __gu_err; \ })
@@ -314,10 +332,13 @@ do { \long __gu_err; \ __long_type(*(ptr)) __gu_val; \ __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ -__chk_user_ptr (ptr); \ +__typeof__ (size) __gu_size = (size); \ + \ +__chk_user_ptr (__gu_addr); \barrier_nospec (); \ -__get_user_size (__gu_val, __gu_addr, (size), __gu_err); \ +__get_user_size (__gu_val, __gu_addr, __gu_size, __gu_err); \ (x) = (__force __typeof__(*(ptr)))__gu_val; \ + \ __gu_err; \ })
Greg Kroah-Hartman
maintainerPATCH 186/194 powerpc/ima: Fix secure boot rules in ima arch policy
In reply to Greg Kroah-HartmanFrom: Nayna Jain <[email protected]>
commit fa4f3f56ccd28ac031ab275e673ed4098855fed4 upstream.
To prevent verifying the kernel module appended signature twice (finit_module), once by the module_sig_check() and again by IMA, powerpc secure boot rules define an IMA architecture specific policy rule only if CONFIG_MODULE_SIG_FORCE is not enabled. This, unfortunately, does not take into account the ability of enabling "sig_enforce" on the boot command line (module.sig_enforce=1).
Including the IMA module appraise rule results in failing the finit_module syscall, unless the module signing public key is loaded onto the IMA keyring.
This patch fixes secure boot policy rules to be based on CONFIG_MODULE_SIG instead.
--- arch/powerpc/kernel/ima_arch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/powerpc/kernel/ima_arch.c +3 -3
@@ -19,12 +19,12 @@ bool arch_ima_get_secureboot(void)* to be stored as an xattr or as an appended signature. * * To avoid duplicate signature verification as much as possible, the IMA -* policy rule for module appraisal is added only if CONFIG_MODULE_SIG_FORCE +* policy rule for module appraisal is added only if CONFIG_MODULE_SIG * is not enabled. */ static const char *const secure_rules[] = {"appraise func=KEXEC_KERNEL_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig" , -#ifndef CONFIG_MODULE_SIG_FORCE +#ifndef CONFIG_MODULE_SIG"appraise func=MODULE_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig" , #endifNULL
@@ -50,7 +50,7 @@ static const char *const secure_and_trus"measure func=KEXEC_KERNEL_CHECK template=ima-modsig" ,"measure func=MODULE_CHECK template=ima-modsig" ,"appraise func=KEXEC_KERNEL_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig" , -#ifndef CONFIG_MODULE_SIG_FORCE +#ifndef CONFIG_MODULE_SIG"appraise func=MODULE_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig" , #endifNULL
Greg Kroah-Hartman
maintainerPATCH 187/194 RDMA/uverbs: Do not discard the IB_EVENT_DEVICE_FATAL event
In reply to Greg Kroah-HartmanFrom: Jason Gunthorpe <[email protected]>
commit c485b19d52c4ba269dfd027945dee81755fdd530 upstream.
The commit below moved all of the destruction to the disassociate step and cleaned up the event channel during destroy_uobj.
However, when ib_uverbs_free_hw_resources() pushes IB_EVENT_DEVICE_FATAL and then immediately goes to destroy all uobjects this causes ib_uverbs_free_event_queue() to discard the queued event if userspace hasn't already read() it.
Unlike all other event queues async FD needs to defer the ib_uverbs_free_event_queue() until FD release. This still unregisters the handler from the IB device during disassociation.
--- drivers/infiniband/core/rdma_core.c | 3 +- drivers/infiniband/core/uverbs.h | 1 drivers/infiniband/core/uverbs_main.c | 2 - drivers/infiniband/core/uverbs_std_types_async_fd.c | 26 +++++++++++++++++++- 4 files changed, 29 insertions(+), 3 deletions(-)
drivers/infiniband/core/rdma_core.c +2 -1
@@ -459,7 +459,8 @@ alloc_begin_fd_uobject(const struct uverstruct ib_uobject *uobj;struct file *filp; -if (WARN_ON (fd_type->fops->release != &uverbs_uobject_fd_release)) +if (WARN_ON (fd_type->fops->release != &uverbs_uobject_fd_release && + fd_type->fops->release != &uverbs_async_event_release))return ERR_PTR (-EINVAL ); new_fd =get_unused_fd_flags (O_CLOEXEC );
drivers/infiniband/core/uverbs.h +1 -0
@@ -219,6 +219,7 @@ void ib_uverbs_init_event_queue(struct ivoid ib_uverbs_init_async_event_file (struct ib_uverbs_async_event_file *ev_file);void ib_uverbs_free_event_queue (struct ib_uverbs_event_queue *event_queue);void ib_uverbs_flow_resources_free (struct ib_uflow_resources *uflow_res); +int uverbs_async_event_release (struct inode *inode,struct file *filp);int ib_alloc_ucontext (struct uverbs_attr_bundle *attrs);int ib_init_ucontext (struct uverbs_attr_bundle *attrs);
drivers/infiniband/core/uverbs_main.c +1 -1
@@ -346,7 +346,7 @@ const struct file_operations uverbs_asyn .owner = THIS_MODULE, .read = ib_uverbs_async_event_read, .poll = ib_uverbs_async_event_poll, - .release = uverbs_uobject_fd_release, + .release = uverbs_async_event_release, .fasync = ib_uverbs_async_event_fasync, .llseek = no_llseek, };
drivers/infiniband/core/uverbs_std_types_async_fd.c +25 -1
@@ -26,10 +26,34 @@ static int uverbs_async_event_destroy_uo container_of(uobj, struct ib_uverbs_async_event_file, uobj);ib_unregister_event_handler (&event_file->event_handler); -ib_uverbs_free_event_queue (&event_file->ev_queue);return 0 ; } +int uverbs_async_event_release (struct inode *inode,struct file *filp) +{ +struct ib_uverbs_async_event_file *event_file; +struct ib_uobject *uobj = filp->private_data; +int ret; + +if (!uobj) +return uverbs_uobject_fd_release (inode, filp); + + event_file = + container_of(uobj, struct ib_uverbs_async_event_file, uobj); + +/* +* The async event FD has to deliver IB_EVENT_DEVICE_FATAL even after +* disassociation, so cleaning the event list must only happen after +* release. The user knows it has reached the end of the event stream +* when it sees IB_EVENT_DEVICE_FATAL. +*/ +uverbs_uobject_get (uobj); + ret =uverbs_uobject_fd_release (inode, filp); +ib_uverbs_free_event_queue (&event_file->ev_queue); +uverbs_uobject_put (uobj); +return ret; +} + DECLARE_UVERBS_NAMED_METHOD( UVERBS_METHOD_ASYNC_EVENT_ALLOC, UVERBS_ATTR_FD(UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,
Greg Kroah-Hartman
maintainerPATCH 188/194 RDMA/uverbs: Move IB_EVENT_DEVICE_FATAL to destroy_uobj
In reply to Greg Kroah-HartmanFrom: Jason Gunthorpe <[email protected]>
commit ccfdbaa5cf4601b9b71601893029dcc9245c002b upstream.
When multiple async FDs were allowed to exist the idea was for all broadcast events to be delivered to all async FDs, however IB_EVENT_DEVICE_FATAL was missed.
Instead of having ib_uverbs_free_hw_resources() special case the global async_fd, have it cause the event during the uobject destruction. Every async fd is now a uobject so simply generate the IB_EVENT_DEVICE_FATAL while destroying the async fd uobject. This ensures every async FD gets a copy of the event.
--- drivers/infiniband/core/uverbs.h | 3 +++ drivers/infiniband/core/uverbs_main.c | 10 +++------- drivers/infiniband/core/uverbs_std_types_async_fd.c | 4 ++++ 3 files changed, 10 insertions(+), 7 deletions(-)
drivers/infiniband/core/uverbs.h +3 -0
@@ -228,6 +228,9 @@ void ib_uverbs_release_ucq(struct ib_uve struct ib_ucq_object *uobj);void ib_uverbs_release_uevent (struct ib_uevent_object *uobj);void ib_uverbs_release_file (struct kref *ref); +void ib_uverbs_async_handler (struct ib_uverbs_async_event_file *async_file, +__u64 element,__u64 event, +struct list_head *obj_list,u32 *counter);void ib_uverbs_comp_handler (struct ib_cq *cq,void *cq_context);void ib_uverbs_cq_event_handler (struct ib_event *event,void *context_ptr);
drivers/infiniband/core/uverbs_main.c +3 -7
@@ -386,10 +386,9 @@ void ib_uverbs_comp_handler(struct ib_cqkill_fasync (&ev_queue->async_queue,SIGIO ,POLL_IN ); } -static void -ib_uverbs_async_handler (struct ib_uverbs_async_event_file *async_file, -__u64 element,__u64 event,struct list_head *obj_list, -u32 *counter) +void ib_uverbs_async_handler (struct ib_uverbs_async_event_file *async_file, +__u64 element,__u64 event, +struct list_head *obj_list,u32 *counter) {struct ib_uverbs_event *entry;unsigned long flags;
@@ -1187,9 +1186,6 @@ static void ib_uverbs_free_hw_resources(*/ mutex_unlock (&uverbs_dev->lists_mutex); -ib_uverbs_async_handler (READ_ONCE (file->async_file),0 , -IB_EVENT_DEVICE_FATAL ,NULL ,NULL ); -uverbs_destroy_ufile_hw (file,RDMA_REMOVE_DRIVER_REMOVE );kref_put (&file->ref, ib_uverbs_release_file);
drivers/infiniband/core/uverbs_std_types_async_fd.c +4 -0
@@ -26,6 +26,10 @@ static int uverbs_async_event_destroy_uo container_of(uobj, struct ib_uverbs_async_event_file, uobj);ib_unregister_event_handler (&event_file->event_handler); + +if (why ==RDMA_REMOVE_DRIVER_REMOVE ) +ib_uverbs_async_handler (event_file,0 ,IB_EVENT_DEVICE_FATAL , +NULL ,NULL );return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 189/194 riscv: perf: RISCV_BASE_PMU should be independent
In reply to Greg Kroah-HartmanFrom: Kefeng Wang <[email protected]>
commit 48084c3595cb7429f6ba734cfea1313573b9a7fa upstream.
Selecting PERF_EVENTS without selecting RISCV_BASE_PMU results in a build error.
--- arch/riscv/include/asm/perf_event.h | 8 ++------ arch/riscv/kernel/Makefile | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-)
arch/riscv/include/asm/perf_event.h +2 -6
@@ -12,19 +12,14 @@#include <linux/ptrace.h> #include <linux/interrupt.h> +#ifdef CONFIG_RISCV_BASE_PMU #define RISCV_BASE_COUNTERS 2/* * The RISCV_MAX_COUNTERS parameter should be specified. */ -#ifdef CONFIG_RISCV_BASE_PMU #define RISCV_MAX_COUNTERS 2 -#endif - -#ifndef RISCV_MAX_COUNTERS -#error "Please provide a valid RISCV_MAX_COUNTERS for the PMU." -#endif /* * These are the indexes of bits in counteren register *minus* 1,
@@ -82,6 +77,7 @@ struct riscv_pmu { int irq; }; +#endif #ifdef CONFIG_PERF_EVENTS #define perf_arch_bpf_user_pt_regs (regs) (struct user_regs_struct *)regs#endif
arch/riscv/kernel/Makefile +1 -1
@@ -38,7 +38,7 @@ obj-$(CONFIG_MODULE_SECTIONS) += module- obj-$(CONFIG_FUNCTION_TRACER) += mcount.o ftrace.o obj-$(CONFIG_DYNAMIC_FTRACE) += mcount-dyn.o -obj-$(CONFIG_PERF_EVENTS) += perf_event.o +obj-$(CONFIG_RISCV_BASE_PMU) += perf_event.o obj-$(CONFIG_PERF_EVENTS) += perf_callchain.o obj-$(CONFIG_HAVE_PERF_REGS) += perf_regs.o obj-$(CONFIG_RISCV_SBI) += sbi.o
Greg Kroah-Hartman
maintainerPATCH 190/194 KVM: x86: Fix off-by-one error in kvm_vcpu_ioctl_x86_setup_mce
In reply to Greg Kroah-HartmanFrom: Jim Mattson <[email protected]>
commit c4e0e4ab4cf3ec2b3f0b628ead108d677644ebd9 upstream.
Bank_num is a one-based count of banks, not a zero-based index. It overflows the allocated space only when strictly greater than KVM_MAX_MCE_BANKS.
Message-Id: <[email protected]>
--- arch/x86/kvm/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kvm/x86.c +1 -1
@@ -3739,7 +3739,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(unsigned bank_num = mcg_cap &0xff , bank; r = -EINVAL ; -if (!bank_num || bank_num >=KVM_MAX_MCE_BANKS ) +if (!bank_num || bank_num >KVM_MAX_MCE_BANKS ) goto out;if (mcg_cap & ~(kvm_mce_cap_supported |0xff |0xff0000 )) goto out;
Greg Kroah-Hartman
maintainerPATCH 191/194 bpf: Enforce returning 0 for fentry/fexit progs
In reply to Greg Kroah-HartmanFrom: Yonghong Song <[email protected]>
commit e92888c72fbdc6f9d07b3b0604c012e81d7c0da7 upstream.
Currently, tracing/fentry and tracing/fexit prog return values are not enforced. In trampoline codes, the fentry/fexit prog return values are ignored. Let us enforce it to be 0 to avoid confusion and allows potential future extension.
This patch also explicitly added return value checking for tracing/raw_tp, tracing/fmod_ret, and freplace programs such that these program return values can be anything. The purpose are two folds:
1. to make it explicit about return value expectations for these programs in verifier.
2. for tracing prog_type, if a future attach type is added, the default is -ENOTSUPP which will enforce to specify return value ranges explicitly.
--- kernel/bpf/verifier.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
kernel/bpf/verifier.c +16 -0
@@ -6498,6 +6498,22 @@ static int check_return_code(struct bpf_return 0 ; range =tnum_const (0 );break ; +case BPF_PROG_TYPE_TRACING : +switch (env->prog->expected_attach_type) { +case BPF_TRACE_FENTRY : +case BPF_TRACE_FEXIT : + range =tnum_const (0 ); +break ; +case BPF_TRACE_RAW_TP : +return 0 ; +default : +return -ENOTSUPP ; + } +break ; +case BPF_PROG_TYPE_EXT : +/* freplace program can return anything as its return value +* depends on the to-be-replaced kernel func or bpf program. +*/ default :return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 192/194 selftests/bpf: Enforce returning 0 for fentry/fexit programs
In reply to Greg Kroah-HartmanFrom: Yonghong Song <[email protected]>
commit 6d74f64b922b8394dccc52576659cb0dc0a1da7b upstream.
There are a few fentry/fexit programs returning non-0. The tests with these programs will break with the previous patch which enfoced return-0 rules. Fix them properly.
--- tools/testing/selftests/bpf/progs/test_overhead.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/testing/selftests/bpf/progs/test_overhead.c +2 -2
@@ -33,13 +33,13 @@ int prog3(struct bpf_raw_tracepoint_args SEC("fentry/__set_task_comm")int BPF_PROG (prog4 ,struct task_struct *tsk,const char *buf,bool exec) { -return !tsk; +return 0 ; } SEC("fexit/__set_task_comm")int BPF_PROG (prog5 ,struct task_struct *tsk,const char *buf,bool exec) { -return !tsk; +return 0 ; } char _license[] SEC("license") = "GPL";
Greg Kroah-Hartman
maintainerPATCH 193/194 bpf: Restrict bpf_trace_printk()s %s usage and add %pks, %pus specifier
In reply to Greg Kroah-HartmanFrom: Daniel Borkmann <[email protected]>
commit b2a5212fb634561bb734c6356904e37f6665b955 upstream.
Usage of plain %s conversion specifier in bpf_trace_printk() suffers from the very same issue as bpf_probe_read{,str}() helpers, that is, it is broken on archs with overlapping address ranges.
While the helpers have been addressed through work in 6ae08ae3dea2 ("bpf: Add probe_read_{user, kernel} and probe_read_{user, kernel}_str helpers"), we need an option for bpf_trace_printk() as well to fix it.
Similarly as with the helpers, force users to make an explicit choice by adding %pks and %pus specifier to bpf_trace_printk() which will then pick the corresponding strncpy_from_unsafe*() variant to perform the access under KERNEL_DS or USER_DS. The %pk* (kernel specifier) and %pu* (user specifier) can later also be extended for other objects aside strings that are probed and printed under tracing, and reused out of other facilities like bpf_seq_printf() or BTF based type printing.
Existing behavior of %s for current users is still kept working for archs where it is not broken and therefore gated through CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE. For archs not having this property we fall-back to pick probing under KERNEL_DS as a sensible default.
--- Documentation/core-api/printk-formats.rst | 14 ++++ kernel/trace/bpf_trace.c | 94 +++++++++++++++++++----------- lib/vsprintf.c | 12 +++ 3 files changed, 88 insertions(+), 32 deletions(-)
Documentation/core-api/printk-formats.rst +14 -0
@@ -112,6 +112,20 @@ used when printing stack backtraces. The consideration the effect of compiler optimisations which may occur when tail-calls are used and marked with the noreturn GCC attribute. +Probed Pointers from BPF / tracing +---------------------------------- + +:: + + %pks kernel string + %pus user string + +The ``k`` and ``u`` specifiers are used for printing prior probed memory from +either kernel memory (k) or user memory (u). The subsequent ``s`` specifier +results in printing a string. For direct use in regular vsnprintf() the (k) +and (u) annotation is ignored, however, when used out of BPF's bpf_trace_printk(), +for example, it reads the memory it is pointing to without faulting. + Kernel Pointers ---------------
kernel/trace/bpf_trace.c +62 -32
125 lines not on this page · raw message
lib/vsprintf.c +12 -0
@@ -2168,6 +2168,10 @@ char *fwnode_string(char *buf, char *end* f full name * P node name, including a possible unit address * - 'x' For printing the address. Equivalent to "%lx". +* - '[ku]s' For a BPF/tracing related format specifier, e.g. used out of +* bpf_trace_printk() where [ku] prefix specifies either kernel (k) +* or user (u) memory to probe, and: +* s a string, equivalent to "%s" on direct vsnprintf() use * * ** When making changes please also update: * Documentation/core-api/printk-formats.rst
@@ -2251,6 +2255,14 @@ char *pointer(const char *fmt, char *bufif (!IS_ERR (ptr))break ;return err_ptr (buf, end, ptr, spec); +case 'u' : +case 'k' : +switch (fmt[1 ]) { +case 's' : +return string (buf, end, ptr, spec); +default : +return error_string (buf, end,"(einval)" , spec); + } }/* default is to _not_ leak addresses, hash before printing */
Greg Kroah-Hartman
maintainerPATCH 194/194 Makefile: disallow data races on gcc-10 as well
In reply to Greg Kroah-HartmanFrom: Sergei Trofimovich <[email protected]>
commit b1112139a103b4b1101d0d2d72931f2d33d8c978 upstream.
gcc-10 will rename --param=allow-store-data-races=0 to -fno-allow-store-data-races.
The flag change happened at https://gcc.gnu.org/PR92046.
--- Makefile | 1 + 1 file changed, 1 insertion(+)
Makefile +1 -0
@@ -710,6 +710,7 @@ endif # Tell gcc to never replace conditional load with a non-conditional one KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) +KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races) include scripts/Makefile.kcov include scripts/Makefile.gcc-plugins
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
Quick feedback:
You also need to pull in commit 92db978f0d68 ("net: ethernet: ti: Remove TI_CPTS_MOD workaround") which fixes commit b6d49cab44b5 ("net: Make PTP-specific drivers depend on PTP_1588_CLOCK"). This is necessary to avoid various compile errors (see below).
Guenter
---
Building arm:omap2plus_defconfig ... failed
--------------
Error log:
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_ndo_stop':drivers/net/ethernet/ti/cpsw.c:886: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_remove':drivers/net/ethernet/ti/cpsw.c:1741: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_rx_handler':drivers/net/ethernet/ti/cpsw.c:437: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_ndo_open':drivers/net/ethernet/ti/cpsw.c:840: undefined reference to `cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_probe':drivers/net/ethernet/ti/cpsw.c:1716: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x34): undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x194): undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x350): undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0xb20): undefined reference to `cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o: in function `cpsw_tx_handler':drivers/net/ethernet/ti/cpsw_priv.c:68: undefined reference to `cpts_tx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o: in function `cpsw_init_common':drivers/net/ethernet/ti/cpsw_priv.c:525: undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o:(.debug_addr+0xa38): undefined reference to `cpts_tx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o:(.debug_addr+0xc90): undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_ndo_stop':drivers/net/ethernet/ti/cpsw_new.c:814: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_remove':drivers/net/ethernet/ti/cpsw_new.c:2028: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_rx_handler':drivers/net/ethernet/ti/cpsw_new.c:379: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_probe':drivers/net/ethernet/ti/cpsw_new.c:2004: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_ndo_open':drivers/net/ethernet/ti/cpsw_new.c:874: undefined reference to `cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x38): undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x158): undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x2c4): undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0xa60): undefined reference to `cpts_register' make[1]: *** [vmlinux] Error 1
make: *** [sub-make] Error 2
--------------
Building arm:keystone_defconfig ... failed
--------------
Error log:
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_rxtstamp':drivers/net/ethernet/ti/netcp_ethss.c:2595: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_probe':drivers/net/ethernet/ti/netcp_ethss.c:3719: undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_remove':drivers/net/ethernet/ti/netcp_ethss.c:3812: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_unregister_cpts':drivers/net/ethernet/ti/netcp_ethss.c:2731: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_register_cpts':drivers/net/ethernet/ti/netcp_ethss.c:2714: undefined reference to `cpts_register' make[1]: *** [vmlinux] Error 1
make: *** [sub-make] Error 2
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
Quick feedback:
You also need to pull in commit 92db978f0d68 ("net: ethernet: ti: Remove TI_CPTS_MOD workaround") which fixes commit b6d49cab44b5 ("net: Make PTP-specific drivers depend on PTP_1588_CLOCK"). This is necessary to avoid compile errors.
Guenter
---
Building arm:omap2plus_defconfig ... failed
--------------
Error log:
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_ndo_stop':drivers/net/ethernet/ti/cpsw.c:886: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_remove':drivers/net/ethernet/ti/cpsw.c:1741: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_rx_handler':drivers/net/ethernet/ti/cpsw.c:437: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_ndo_open':drivers/net/ethernet/ti/cpsw.c:840: undefined reference to `cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o: in function `cpsw_probe':drivers/net/ethernet/ti/cpsw.c:1716: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x34): undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x194): undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0x350): undefined reference to cpts_rx_timestamp' arm-linkkkkkkkkkkkkkkux-gnueabi-ld: drivers/net/ethernet/ti/cpsw.o:(.debug_addr+0xb20): undefined reference to cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o: in function `cpsw_tx_handler':drivers/net/ethernet/ti/cpsw_priv.c:68: undefined reference to `cpts_tx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o: in function `cpsw_init_common':drivers/net/ethernet/ti/cpsw_priv.c:525: undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o:(.debug_addr+0xa38): undefined reference to `cpts_tx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_priv.o:(.debug_addr+0xc90): undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_ndo_stop':drivers/net/ethernet/ti/cpsw_new.c:814: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_remove':drivers/net/ethernet/ti/cpsw_new.c:2028: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_rx_handler':drivers/net/ethernet/ti/cpsw_new.c:379: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_probe':drivers/net/ethernet/ti/cpsw_new.c:2004: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_ndo_open':drivers/net/ethernet/ti/cpsw_new.c:874: undefined reference to `cpts_register'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x38): undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x158): undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0x2c4): undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/cpsw_new.o:(.debug_addr+0xa60): undefined reference to `cpts_register' make[1]: *** [vmlinux] Error 1
make: *** [sub-make] Error 2
--------------
Building arm:keystone_defconfig ... failed
--------------
Error log:
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_rxtstamp':drivers/net/ethernet/ti/netcp_ethss.c:2595: undefined reference to `cpts_rx_timestamp'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_probe':drivers/net/ethernet/ti/netcp_ethss.c:3719: undefined reference to `cpts_create'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_remove':drivers/net/ethernet/ti/netcp_ethss.c:3812: undefined reference to `cpts_release'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_unregister_cpts':drivers/net/ethernet/ti/netcp_ethss.c:2731: undefined reference to `cpts_unregister'
arm-linux-gnueabi-ld: drivers/net/ethernet/ti/netcp_ethss.o: in function `gbe_register_cpts':drivers/net/ethernet/ti/netcp_ethss.c:2714: undefined reference to `cpts_register' make[1]: *** [vmlinux] Error 1
make: *** [sub-make] Error 2
Greg Kroah-Hartman
maintainerQuoted 10 lines · Guenter Roeck
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
Quoted 5 lines
Quick feedback:
You also need to pull in commit
92db978f0d68("net: ethernet: ti: RemoveTI_CPTS_MODworkaround") which fixes commitb6d49cab44b5("net: Make PTP-specific drivers depend onPTP_1588_CLOCK"). This is necessary to avoid compile errors.
Sasha has now dropped that original patch, so we should be fine. I'll push out a -rc2 soon with that change.
thanks,
greg k-h
Jon Hunter
maintainerQuoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.6.14-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.6.y
and the diffstat can be found below.thanks,
greg k-h
All tests are passing for Tegra ...
Test results for stable-v5.6:
13 builds: 13 pass, 0 fail
26 boots: 26 pass, 0 fail
42 tests: 42 pass, 0 failLinux version: 5.6.14-rc2-g67346f550ad8
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra30-cardhu-a04Cheers
Jon
Signature · 1 line
nvpublic
Greg Kroah-Hartman
maintainerQuoted 27 lines · Jon Hunter
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.6.14-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.6.y
and the diffstat can be found below.thanks,
greg k-h
All tests are passing for Tegra ...
Test results for stable-v5.6:
13 builds: 13 pass, 0 fail 26 boots: 26 pass, 0 fail 42 tests: 42 pass, 0 fail
Quoted 5 lines
Linux version: 5.6.14-rc2-g67346f550ad8
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,tegra194-p2972-0000, tegra20-ventana, tegra210-p2371-2180, tegra210-p3450-0000, tegra30-cardhu-a04
Wonderful, thanks for testing all of these and letting me know.
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.6.14 release. There are 194 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 20 May 2020 17:32:42 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.6.14-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.6.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions. I see rc2, I will test that and let you know the results.
thanks,
-- Shuah