Loading Documentation/filesystems/overlayfs.txt +1 −1 Original line number Diff line number Diff line Loading @@ -325,7 +325,7 @@ beneath or above the path of another overlay lower layer path. Using an upper layer path and/or a workdir path that are already used by another overlay mount is not allowed and may fail with EBUSY. Using partially overlapping paths is not allowed but will not fail with EBUSY. partially overlapping paths is not allowed and may fail with EBUSY. If files are accessed from two overlayfs mounts which share or overlap the upper layer and/or workdir path the behavior of the overlay is undefined, though it will not result in a crash or deadlock. Loading Makefile +1 −1 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 SUBLEVEL = 72 SUBLEVEL = 76 EXTRAVERSION = NAME = "People's Front" Loading arch/arc/kernel/troubleshoot.c +8 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,12 @@ void show_regs(struct pt_regs *regs) struct task_struct *tsk = current; struct callee_regs *cregs; /* * generic code calls us with preemption disabled, but some calls * here could sleep, so re-enable to avoid lockdep splat */ preempt_enable(); print_task_path_n_nm(tsk); show_regs_print_info(KERN_INFO); Loading Loading @@ -221,6 +227,8 @@ void show_regs(struct pt_regs *regs) cregs = (struct callee_regs *)current->thread.callee_reg; if (cregs) show_callee_regs(cregs); preempt_disable(); } void show_kernel_fault_diag(const char *str, struct pt_regs *regs, Loading arch/arc/mm/fault.c +15 −23 Original line number Diff line number Diff line Loading @@ -66,14 +66,12 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) struct vm_area_struct *vma = NULL; struct task_struct *tsk = current; struct mm_struct *mm = tsk->mm; siginfo_t info; int si_code = SEGV_MAPERR; int ret; vm_fault_t fault; int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; clear_siginfo(&info); /* * We fault-in kernel-space virtual memory on-demand. The * 'reference' page table is init_mm.pgd. Loading @@ -83,16 +81,14 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) * only copy the information from the master page table, * nothing more. */ if (address >= VMALLOC_START) { if (address >= VMALLOC_START && !user_mode(regs)) { ret = handle_kernel_vaddr_fault(address); if (unlikely(ret)) goto bad_area_nosemaphore; goto no_context; else return; } info.si_code = SEGV_MAPERR; /* * If we're in an interrupt or have no user * context, we must not take the fault.. Loading @@ -119,7 +115,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) * we can handle it.. */ good_area: info.si_code = SEGV_ACCERR; si_code = SEGV_ACCERR; /* Handle protection violation, execute on heap or stack */ Loading @@ -143,13 +139,18 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) */ fault = handle_mm_fault(vma, address, flags); /* If Pagefault was interrupted by SIGKILL, exit page fault "early" */ if (unlikely(fatal_signal_pending(current))) { if ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY)) up_read(&mm->mmap_sem); if (user_mode(regs)) /* * if fault retry, mmap_sem already relinquished by core mm * so OK to return to user mode (with signal handled first) */ if (fault & VM_FAULT_RETRY) { if (!user_mode(regs)) goto no_context; return; } } perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); Loading Loading @@ -195,15 +196,10 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) bad_area: up_read(&mm->mmap_sem); bad_area_nosemaphore: /* User mode accesses just cause a SIGSEGV */ if (user_mode(regs)) { tsk->thread.fault_address = address; info.si_signo = SIGSEGV; info.si_errno = 0; /* info.si_code has been set above */ info.si_addr = (void __user *)address; force_sig_info(SIGSEGV, &info, tsk); force_sig_fault(SIGSEGV, si_code, (void __user *)address, tsk); return; } Loading Loading @@ -238,9 +234,5 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) goto no_context; tsk->thread.fault_address = address; info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRERR; info.si_addr = (void __user *)address; force_sig_info(SIGBUS, &info, tsk); force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk); } arch/arm/boot/dts/am571x-idk.dts +1 −6 Original line number Diff line number Diff line Loading @@ -98,14 +98,9 @@ }; &mmc1 { pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104"; pinctrl-names = "default", "hs"; pinctrl-0 = <&mmc1_pins_default_no_clk_pu>; pinctrl-1 = <&mmc1_pins_hs>; pinctrl-2 = <&mmc1_pins_sdr12>; pinctrl-3 = <&mmc1_pins_sdr25>; pinctrl-4 = <&mmc1_pins_sdr50>; pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>; pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>; }; &mmc2 { Loading Loading
Documentation/filesystems/overlayfs.txt +1 −1 Original line number Diff line number Diff line Loading @@ -325,7 +325,7 @@ beneath or above the path of another overlay lower layer path. Using an upper layer path and/or a workdir path that are already used by another overlay mount is not allowed and may fail with EBUSY. Using partially overlapping paths is not allowed but will not fail with EBUSY. partially overlapping paths is not allowed and may fail with EBUSY. If files are accessed from two overlayfs mounts which share or overlap the upper layer and/or workdir path the behavior of the overlay is undefined, though it will not result in a crash or deadlock. Loading
Makefile +1 −1 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 SUBLEVEL = 72 SUBLEVEL = 76 EXTRAVERSION = NAME = "People's Front" Loading
arch/arc/kernel/troubleshoot.c +8 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,12 @@ void show_regs(struct pt_regs *regs) struct task_struct *tsk = current; struct callee_regs *cregs; /* * generic code calls us with preemption disabled, but some calls * here could sleep, so re-enable to avoid lockdep splat */ preempt_enable(); print_task_path_n_nm(tsk); show_regs_print_info(KERN_INFO); Loading Loading @@ -221,6 +227,8 @@ void show_regs(struct pt_regs *regs) cregs = (struct callee_regs *)current->thread.callee_reg; if (cregs) show_callee_regs(cregs); preempt_disable(); } void show_kernel_fault_diag(const char *str, struct pt_regs *regs, Loading
arch/arc/mm/fault.c +15 −23 Original line number Diff line number Diff line Loading @@ -66,14 +66,12 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) struct vm_area_struct *vma = NULL; struct task_struct *tsk = current; struct mm_struct *mm = tsk->mm; siginfo_t info; int si_code = SEGV_MAPERR; int ret; vm_fault_t fault; int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; clear_siginfo(&info); /* * We fault-in kernel-space virtual memory on-demand. The * 'reference' page table is init_mm.pgd. Loading @@ -83,16 +81,14 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) * only copy the information from the master page table, * nothing more. */ if (address >= VMALLOC_START) { if (address >= VMALLOC_START && !user_mode(regs)) { ret = handle_kernel_vaddr_fault(address); if (unlikely(ret)) goto bad_area_nosemaphore; goto no_context; else return; } info.si_code = SEGV_MAPERR; /* * If we're in an interrupt or have no user * context, we must not take the fault.. Loading @@ -119,7 +115,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) * we can handle it.. */ good_area: info.si_code = SEGV_ACCERR; si_code = SEGV_ACCERR; /* Handle protection violation, execute on heap or stack */ Loading @@ -143,13 +139,18 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) */ fault = handle_mm_fault(vma, address, flags); /* If Pagefault was interrupted by SIGKILL, exit page fault "early" */ if (unlikely(fatal_signal_pending(current))) { if ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY)) up_read(&mm->mmap_sem); if (user_mode(regs)) /* * if fault retry, mmap_sem already relinquished by core mm * so OK to return to user mode (with signal handled first) */ if (fault & VM_FAULT_RETRY) { if (!user_mode(regs)) goto no_context; return; } } perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); Loading Loading @@ -195,15 +196,10 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) bad_area: up_read(&mm->mmap_sem); bad_area_nosemaphore: /* User mode accesses just cause a SIGSEGV */ if (user_mode(regs)) { tsk->thread.fault_address = address; info.si_signo = SIGSEGV; info.si_errno = 0; /* info.si_code has been set above */ info.si_addr = (void __user *)address; force_sig_info(SIGSEGV, &info, tsk); force_sig_fault(SIGSEGV, si_code, (void __user *)address, tsk); return; } Loading Loading @@ -238,9 +234,5 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) goto no_context; tsk->thread.fault_address = address; info.si_signo = SIGBUS; info.si_errno = 0; info.si_code = BUS_ADRERR; info.si_addr = (void __user *)address; force_sig_info(SIGBUS, &info, tsk); force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk); }
arch/arm/boot/dts/am571x-idk.dts +1 −6 Original line number Diff line number Diff line Loading @@ -98,14 +98,9 @@ }; &mmc1 { pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104"; pinctrl-names = "default", "hs"; pinctrl-0 = <&mmc1_pins_default_no_clk_pu>; pinctrl-1 = <&mmc1_pins_hs>; pinctrl-2 = <&mmc1_pins_sdr12>; pinctrl-3 = <&mmc1_pins_sdr25>; pinctrl-4 = <&mmc1_pins_sdr50>; pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>; pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>; }; &mmc2 { Loading