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

Commit e182c965 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds
Browse files

[PATCH] UML: add generic BUG support



The BUG changes in -mm3 need some arch support.  This patch adds the UML
support needed.  For the most part, it was stolen from the underlying
architecture.  The exception is the kernel eip < PAGE_OFFSET test, which is
wrong for skas mode UMLs.

Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c31a0bf3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -47,6 +47,11 @@ config GENERIC_CALIBRATE_DELAY
	bool
	default y

config GENERIC_BUG
	bool
	default y
	depends on BUG

# Used in kernel/irq/manage.c and include/linux/irq.h
config IRQ_RELEASE_METHOD
	bool
+1 −1
Original line number Diff line number Diff line
obj-y = bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
	ptrace_user.o setjmp.o signal.o sigcontext.o syscalls.o sysrq.o \
	sys_call_table.o tls.o

arch/um/sys-i386/bug.c

0 → 100644
+20 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
 * Licensed under the GPL V2
 */

#include <linux/uaccess.h>

/* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because
 * that's not relevent in skas mode.
 */

int is_valid_bugaddr(unsigned long eip)
{
	unsigned short ud2;

	if (probe_kernel_address((unsigned short __user *)eip, ud2))
		return 0;

	return ud2 == 0x0b0f;
}
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
# Licensed under the GPL
#

obj-y = bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
obj-y = bug.o bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
	setjmp.o sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o \
	ksyms.o tls.o

+20 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
 * Licensed under the GPL V2
 */

#include <linux/uaccess.h>

/* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because
 * that's not relevent in skas mode.
 */

int is_valid_bugaddr(unsigned long eip)
{
	unsigned short ud2;

	if (probe_kernel_address((unsigned short __user *)eip, ud2))
		return 0;

	return ud2 == 0x0b0f;
}
Loading