Commit d0cc617a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull MIPS fixes from Paul Burton:

 - Declare ginvt() __always_inline due to its use of an argument as an
   inline asm immediate.

 - A VDSO build fix following Kbuild changes made this cycle.

 - A fix for boot failures on txx9 systems following memory
   initialization changes made this cycle.

 - Bounds check virt_addr_valid() to prevent it spuriously indicating
   that bogus addresses are valid, in turn fixing hardened usercopy
   failures that have been present since v4.12.

 - Build uImage.gz for pistachio systems by default, since this is the
   image we need in order to actually boot on a board.

 - Remove an unused variable in our uprobes code.

* tag 'mips_fixes_5.2_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: uprobes: remove set but not used variable 'epc'
  MIPS: pistachio: Build uImage.gz by default
  MIPS: Make virt_addr_valid() return bool
  MIPS: Bounds check virt_addr_valid
  MIPS: TXx9: Fix boot crash in free_initmem()
  MIPS: remove a space after -I to cope with header search paths for VDSO
  MIPS: mark ginvt() as __always_inline
parents 9331b674 f532beee
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ _ASM_MACRO_1R1I(ginvt, rs, type,
# define _ASM_SET_GINV
#endif

static inline void ginvt(unsigned long addr, enum ginvt_type type)
static __always_inline void ginvt(unsigned long addr, enum ginvt_type type)
{
	asm volatile(
		".set	push\n"
+1 −1
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ static inline int pfn_valid(unsigned long pfn)
#define virt_to_pfn(kaddr)   	PFN_DOWN(virt_to_phys((void *)(kaddr)))
#define virt_to_page(kaddr)	pfn_to_page(virt_to_pfn(kaddr))

extern int __virt_addr_valid(const volatile void *kaddr);
extern bool __virt_addr_valid(const volatile void *kaddr);
#define virt_addr_valid(kaddr)						\
	__virt_addr_valid((const volatile void *) (kaddr))

+0 −3
Original line number Diff line number Diff line
@@ -112,9 +112,6 @@ int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs)
	 */
	aup->resume_epc = regs->cp0_epc + 4;
	if (insn_has_delay_slot((union mips_instruction) aup->insn[0])) {
		unsigned long epc;

		epc = regs->cp0_epc;
		__compute_return_epc_for_insn(regs,
			(union mips_instruction) aup->insn[0]);
		aup->resume_epc = regs->cp0_epc;
+6 −1
Original line number Diff line number Diff line
@@ -201,8 +201,13 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
	return ret;
}

int __virt_addr_valid(const volatile void *kaddr)
bool __virt_addr_valid(const volatile void *kaddr)
{
	unsigned long vaddr = (unsigned long)vaddr;

	if ((vaddr < PAGE_OFFSET) || (vaddr >= MAP_BASE))
		return false;

	return pfn_valid(PFN_DOWN(virt_to_phys(kaddr)));
}
EXPORT_SYMBOL_GPL(__virt_addr_valid);
+1 −0
Original line number Diff line number Diff line
@@ -6,3 +6,4 @@ cflags-$(CONFIG_MACH_PISTACHIO) += \
		-I$(srctree)/arch/mips/include/asm/mach-pistachio
load-$(CONFIG_MACH_PISTACHIO)		+= 0xffffffff80400000
zload-$(CONFIG_MACH_PISTACHIO)		+= 0xffffffff81000000
all-$(CONFIG_MACH_PISTACHIO)		:= uImage.gz
Loading