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

Commit 403b0a7b authored by Blagovest Kolenichev's avatar Blagovest Kolenichev
Browse files

Merge LTS tag v4.19.1 into msm-kona



* refs/heads/tmp-07a03b97:
  Linux 4.19.1
  net: bridge: remove ipv6 zero address check in mcast queries
  sparc64: Wire up compat getpeername and getsockname.
  sparc64: Make corrupted user stacks more debuggable.
  sparc64: Export __node_distance.
  sctp: check policy more carefully when getting pr status
  Revert "be2net: remove desc field from be_eq_obj"
  r8169: fix broken Wake-on-LAN from S5 (poweroff)
  net: Properly unlink GRO packets on overflow.
  net: drop skb on failure in ip_check_defrag()
  mlxsw: core: Fix devlink unregister flow
  mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs
  net/smc: fix smc_buf_unuse to use the lgr pointer
  net/ipv6: Allow onlink routes to have a device mismatch if it is the default route
  openvswitch: Fix push/pop ethernet validation
  bonding: fix length of actor system
  vhost: Fix Spectre V1 vulnerability
  rtnetlink: Disallow FDB configuration for non-Ethernet device
  Revert "net: simplify sock_poll_wait"
  net: udp: fix handling of CHECKSUM_COMPLETE packets
  net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules
  net: sched: gred: pass the right attribute to gred_change_table_def()
  net/mlx5e: fix csum adjustments caused by RXFCS
  ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are called
  bridge: do not add port to router list when receives query with source 0.0.0.0

Change-Id: Idde80d444a4a617490f19de89ccd72ba1daa5533
Signed-off-by: default avatarBlagovest Kolenichev <bkolenichev@codeaurora.org>
Signed-off-by: default avatarIvaylo Georgiev <irgeorgiev@codeaurora.org>
parents 9e2c041e 07a03b97
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 19
SUBLEVEL = 0
SUBLEVEL = 1
EXTRAVERSION =
NAME = "People's Front"

+2 −1
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ do { save_and_clear_fpu(); \
} while(0)

void synchronize_user_stack(void);
void fault_in_user_windows(void);
struct pt_regs;
void fault_in_user_windows(struct pt_regs *);

#endif /* __SPARC64_SWITCH_TO_64_H */
+19 −6
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <linux/sysrq.h>
#include <linux/nmi.h>
#include <linux/context_tracking.h>
#include <linux/signal.h>

#include <linux/uaccess.h>
#include <asm/page.h>
@@ -521,7 +522,12 @@ static void stack_unaligned(unsigned long sp)
	force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) sp, 0, current);
}

void fault_in_user_windows(void)
static const char uwfault32[] = KERN_INFO \
	"%s[%d]: bad register window fault: SP %08lx (orig_sp %08lx) TPC %08lx O7 %08lx\n";
static const char uwfault64[] = KERN_INFO \
	"%s[%d]: bad register window fault: SP %016lx (orig_sp %016lx) TPC %08lx O7 %016lx\n";

void fault_in_user_windows(struct pt_regs *regs)
{
	struct thread_info *t = current_thread_info();
	unsigned long window;
@@ -534,9 +540,9 @@ void fault_in_user_windows(void)
		do {
			struct reg_window *rwin = &t->reg_window[window];
			int winsize = sizeof(struct reg_window);
			unsigned long sp;
			unsigned long sp, orig_sp;

			sp = t->rwbuf_stkptrs[window];
			orig_sp = sp = t->rwbuf_stkptrs[window];

			if (test_thread_64bit_stack(sp))
				sp += STACK_BIAS;
@@ -547,8 +553,16 @@ void fault_in_user_windows(void)
				stack_unaligned(sp);

			if (unlikely(copy_to_user((char __user *)sp,
						  rwin, winsize)))
						  rwin, winsize))) {
				if (show_unhandled_signals)
					printk_ratelimited(is_compat_task() ?
							   uwfault32 : uwfault64,
							   current->comm, current->pid,
							   sp, orig_sp,
							   regs->tpc,
							   regs->u_regs[UREG_I7]);
				goto barf;
			}
		} while (window--);
	}
	set_thread_wsaved(0);
@@ -556,8 +570,7 @@ void fault_in_user_windows(void)

barf:
	set_thread_wsaved(window + 1);
	user_exit();
	do_exit(SIGILL);
	force_sig(SIGSEGV, current);
}

asmlinkage long sparc_do_fork(unsigned long clone_flags,
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ __handle_preemption:
		 wrpr			%g0, RTRAP_PSTATE_IRQOFF, %pstate

__handle_user_windows:
		add			%sp, PTREGS_OFF, %o0
		call			fault_in_user_windows
661:		 wrpr			%g0, RTRAP_PSTATE, %pstate
		/* If userspace is using ADI, it could potentially pass
+10 −2
Original line number Diff line number Diff line
@@ -371,7 +371,11 @@ static int setup_frame32(struct ksignal *ksig, struct pt_regs *regs,
		get_sigframe(ksig, regs, sigframe_size);
	
	if (invalid_frame_pointer(sf, sigframe_size)) {
		do_exit(SIGILL);
		if (show_unhandled_signals)
			pr_info("%s[%d] bad frame in setup_frame32: %08lx TPC %08lx O7 %08lx\n",
				current->comm, current->pid, (unsigned long)sf,
				regs->tpc, regs->u_regs[UREG_I7]);
		force_sigsegv(ksig->sig, current);
		return -EINVAL;
	}

@@ -501,7 +505,11 @@ static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs,
		get_sigframe(ksig, regs, sigframe_size);
	
	if (invalid_frame_pointer(sf, sigframe_size)) {
		do_exit(SIGILL);
		if (show_unhandled_signals)
			pr_info("%s[%d] bad frame in setup_rt_frame32: %08lx TPC %08lx O7 %08lx\n",
				current->comm, current->pid, (unsigned long)sf,
				regs->tpc, regs->u_regs[UREG_I7]);
		force_sigsegv(ksig->sig, current);
		return -EINVAL;
	}

Loading