Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d76a481b authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge aa7030af on remote branch

Change-Id: Id8c544af45e025b020a668d639a57a835f181501
parents 4bb34a6b aa7030af
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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.
+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"

+8 −0
Original line number Diff line number Diff line
@@ -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);

@@ -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,
+15 −23
Original line number Diff line number Diff line
@@ -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.
@@ -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..
@@ -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 */

@@ -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);

@@ -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;
	}

@@ -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);
}
+1 −6
Original line number Diff line number Diff line
@@ -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