|
@@ -22,9 +22,10 @@
|
|
#include <asm/stacktrace.h>
|
|
#include <asm/stacktrace.h>
|
|
#include <asm/unwind.h>
|
|
#include <asm/unwind.h>
|
|
|
|
|
|
|
|
+#define OPCODE_BUFSIZE 64
|
|
|
|
+
|
|
int panic_on_unrecovered_nmi;
|
|
int panic_on_unrecovered_nmi;
|
|
int panic_on_io_nmi;
|
|
int panic_on_io_nmi;
|
|
-static unsigned int code_bytes = 64;
|
|
|
|
static int die_counter;
|
|
static int die_counter;
|
|
|
|
|
|
bool in_task_stack(unsigned long *stack, struct task_struct *task,
|
|
bool in_task_stack(unsigned long *stack, struct task_struct *task,
|
|
@@ -356,26 +357,6 @@ void die(const char *str, struct pt_regs *regs, long err)
|
|
oops_end(flags, regs, sig);
|
|
oops_end(flags, regs, sig);
|
|
}
|
|
}
|
|
|
|
|
|
-static int __init code_bytes_setup(char *s)
|
|
|
|
-{
|
|
|
|
- ssize_t ret;
|
|
|
|
- unsigned long val;
|
|
|
|
-
|
|
|
|
- if (!s)
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- ret = kstrtoul(s, 0, &val);
|
|
|
|
- if (ret)
|
|
|
|
- return ret;
|
|
|
|
-
|
|
|
|
- code_bytes = val;
|
|
|
|
- if (code_bytes > 8192)
|
|
|
|
- code_bytes = 8192;
|
|
|
|
-
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-__setup("code_bytes=", code_bytes_setup);
|
|
|
|
-
|
|
|
|
void show_regs(struct pt_regs *regs)
|
|
void show_regs(struct pt_regs *regs)
|
|
{
|
|
{
|
|
bool all = true;
|
|
bool all = true;
|
|
@@ -393,8 +374,8 @@ void show_regs(struct pt_regs *regs)
|
|
* time of the fault..
|
|
* time of the fault..
|
|
*/
|
|
*/
|
|
if (!user_mode(regs)) {
|
|
if (!user_mode(regs)) {
|
|
- unsigned int code_prologue = code_bytes * 43 / 64;
|
|
|
|
- unsigned int code_len = code_bytes;
|
|
|
|
|
|
+ unsigned int code_prologue = OPCODE_BUFSIZE * 43 / 64;
|
|
|
|
+ unsigned int code_len = OPCODE_BUFSIZE;
|
|
unsigned char c;
|
|
unsigned char c;
|
|
u8 *ip;
|
|
u8 *ip;
|
|
|
|
|