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

Commit ea5a9eff authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingo Molnar:
 "Misc fixes: a core dumping crash fix, a guess-unwinder regression fix,
  plus three build warning fixes"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/unwind: Fix guess-unwinder regression
  x86/build: Annotate die() with noreturn to fix build warning on clang
  x86/platform/olpc: Fix resume handler build warning
  x86/apic/uv: Silence a shift wrapping warning
  x86/coredump: Always use user_regs_struct for compat_elf_gregset_t
parents 68f5503b 55f856e6
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -272,7 +272,6 @@ struct compat_shmid64_ds {
/*
 * The type of struct elf_prstatus.pr_reg in compatible core dumps.
 */
#ifdef CONFIG_X86_X32_ABI
typedef struct user_regs_struct compat_elf_gregset_t;

/* Full regset -- prstatus on x32, otherwise on ia32 */
@@ -281,10 +280,9 @@ typedef struct user_regs_struct compat_elf_gregset_t;
  do { *(int *) (((void *) &((S)->pr_reg)) + R) = (V); } \
  while (0)

#ifdef CONFIG_X86_X32_ABI
#define COMPAT_USE_64BIT_TIME \
	(!!(task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT))
#else
typedef struct user_regs_struct32 compat_elf_gregset_t;
#endif

/*
+2 −2
Original line number Diff line number Diff line
@@ -815,9 +815,9 @@ static __init void map_mmioh_high_uv3(int index, int min_pnode, int max_pnode)
				l = li;
			}
			addr1 = (base << shift) +
				f * (unsigned long)(1 << m_io);
				f * (1ULL << m_io);
			addr2 = (base << shift) +
				(l + 1) * (unsigned long)(1 << m_io);
				(l + 1) * (1ULL << m_io);
			pr_info("UV: %s[%03d..%03d] NASID 0x%04x ADDR 0x%016lx - 0x%016lx\n",
				id, fi, li, lnasid, addr1, addr2);
			if (max_io < l)
+6 −3
Original line number Diff line number Diff line
@@ -7,11 +7,13 @@

unsigned long unwind_get_return_address(struct unwind_state *state)
{
	unsigned long addr = READ_ONCE_NOCHECK(*state->sp);
	unsigned long addr;

	if (unwind_done(state))
		return 0;

	addr = READ_ONCE_NOCHECK(*state->sp);

	return ftrace_graph_ret_addr(state->task, &state->graph_idx,
				     addr, state->sp);
}
@@ -25,11 +27,12 @@ bool unwind_next_frame(struct unwind_state *state)
		return false;

	do {
		for (state->sp++; state->sp < info->end; state->sp++) {
			unsigned long addr = READ_ONCE_NOCHECK(*state->sp);

		for (state->sp++; state->sp < info->end; state->sp++)
			if (__kernel_text_address(addr))
				return true;
		}

		state->sp = info->next_sp;

+2 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ static int xo15_sci_remove(struct acpi_device *device)
	return 0;
}

#ifdef CONFIG_PM_SLEEP
static int xo15_sci_resume(struct device *dev)
{
	/* Enable all EC events */
@@ -207,6 +208,7 @@ static int xo15_sci_resume(struct device *dev)

	return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(xo15_sci_pm, NULL, xo15_sci_resume);

+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
#include <regex.h>
#include <tools/le_byteshift.h>

void die(char *fmt, ...);
void die(char *fmt, ...) __attribute__((noreturn));

#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))