Commit 7782aae4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM updates from Russell King:

 - Print an un-hashed userspace PC on undefined instruction exception

 - Disable FDPIC ABI

 - Remove redundant vfp_flush/release_thread functions

 - Use raw_cpu_* rather than this_cpu_* in handle_bad_stack()

 - Avoid needlessly long backtraces when show_regs() is called

 - Fix an issue with stack traces through call_with_stack()

 - Avoid stack traces saving a duplicate exception PC value

 - Pass a void pointer to virt_to_page() in DMA mapping code

 - Fix kasan maps for modules when CONFIG_KASAN_VMALLOC=n

 - Show FDT region and page table level names in kernel page tables dump

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: 9246/1: dump: show page table level name
  ARM: 9245/1: dump: show FDT region
  ARM: 9242/1: kasan: Only map modules if CONFIG_KASAN_VMALLOC=n
  ARM: 9240/1: dma-mapping: Pass (void *) to virt_to_page()
  ARM: 9234/1: stacktrace: Avoid duplicate saving of exception PC value
  ARM: 9233/1: stacktrace: Skip frame pointer boundary check for call_with_stack()
  ARM: 9224/1: Dump the stack traces based on the parameter 'regs' of show_regs()
  ARM: 9232/1: Replace this_cpu_* with raw_cpu_* in handle_bad_stack()
  ARM: 9228/1: vfp: kill vfp_flush/release_thread()
  ARM: 9226/1: disable FDPIC ABI
  ARM: 9221/1: traps: print un-hashed user pc on undefined instruction
parents 833477fc e66372ec
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ GZFLAGS :=-9
# Never generate .eh_frame
KBUILD_CFLAGS	+= $(call cc-option,-fno-dwarf2-cfi-asm)

# Disable FDPIC ABI
KBUILD_CFLAGS	+= $(call cc-option,-mno-fdpic)

# This should work on most of the modern platforms
KBUILD_DEFCONFIG := multi_v7_defconfig

+0 −3
Original line number Diff line number Diff line
@@ -46,9 +46,6 @@ union vfp_state {
	struct vfp_hard_struct	hard;
};

extern void vfp_flush_thread(union vfp_state *);
extern void vfp_release_thread(union vfp_state *);

#define FP_HARD_SIZE 35

struct fp_hard_struct {
+8 −0
Original line number Diff line number Diff line
@@ -21,6 +21,9 @@ struct stackframe {
	struct llist_node *kr_cur;
	struct task_struct *tsk;
#endif
#ifdef CONFIG_UNWINDER_FRAME_POINTER
	bool ex_frame;
#endif
};

static __always_inline
@@ -34,6 +37,9 @@ void arm_get_current_stackframe(struct pt_regs *regs, struct stackframe *frame)
		frame->kr_cur = NULL;
		frame->tsk = current;
#endif
#ifdef CONFIG_UNWINDER_FRAME_POINTER
		frame->ex_frame = in_entry_text(frame->pc);
#endif
}

extern int unwind_frame(struct stackframe *frame);
@@ -41,5 +47,7 @@ extern void walk_stackframe(struct stackframe *frame,
			    int (*fn)(struct stackframe *, void *), void *data);
extern void dump_mem(const char *lvl, const char *str, unsigned long bottom,
		     unsigned long top);
extern void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk,
			   const char *loglvl);

#endif	/* __ASM_STACKTRACE_H */
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ void __show_regs(struct pt_regs *regs)
void show_regs(struct pt_regs * regs)
{
	__show_regs(regs);
	dump_stack();
	dump_backtrace(regs, NULL, KERN_DEFAULT);
}

ATOMIC_NOTIFIER_HEAD(thread_notify_head);
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ void *return_address(unsigned int level)
	frame.kr_cur = NULL;
	frame.tsk = current;
#endif
	frame.ex_frame = false;

	walk_stackframe(&frame, save_return_addr, &data);

Loading