From: Borislav Petkov <bp@alien8.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>, X86 ML <x86@kernel.org>,
Andy Lutomirski <luto@amacapital.net>,
Peter Zijlstra <peterz@infradead.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/9] x86/dumpstack: Improve opcodes dumping in the Code: section
Date: Thu, 8 Mar 2018 11:16:28 +0100 [thread overview]
Message-ID: <20180308101628.GA21166@pd.tnic> (raw)
In-Reply-To: <CA+55aFwxPBNk+kh+rmNzLViOqu-GFoJD-FsRe0oahDiwMXy-xw@mail.gmail.com>
On Wed, Mar 07, 2018 at 01:08:32PM -0800, Linus Torvalds wrote:
> On Wed, Mar 7, 2018 at 5:25 AM, Josh Poimboeuf <jpoimboe@redhat.com> wrote:
> >
> > How about we just remove the 'code_bytes=' option? (Or at the very
> > least, reduce its possible range to a reasonable max?)
>
> Ack. Just limit it to 64 bytes max sounds plenty.
Done, combined diff ontop. With a 64-byte on-stack opcodes buffer:
---
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index b37c1c30c16f..2c74c1694d9d 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -587,11 +587,6 @@
Sets the size of memory pool for coherent, atomic dma
allocations, by default set to 256K.
- code_bytes [X86] How many bytes of object code to print
- in an oops report.
- Range: 0 - 8192
- Default: 64
-
com20020= [HW,NET] ARCnet - COM20020 chipset
Format:
<io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]]
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
index 409a5bd02a18..2fc009a1824e 100644
--- a/arch/x86/kernel/dumpstack.c
+++ b/arch/x86/kernel/dumpstack.c
@@ -22,13 +22,9 @@
#include <asm/stacktrace.h>
#include <asm/unwind.h>
-#define OPCODE_BUFSIZE 64
-
int panic_on_unrecovered_nmi;
int panic_on_io_nmi;
-static unsigned int code_bytes = OPCODE_BUFSIZE;
-static u8 __opc[OPCODE_BUFSIZE];
-static u8 *opcodes = __opc;
+
static int die_counter;
static struct pt_regs exec_summary_regs;
@@ -77,19 +73,21 @@ static void printk_stack_address(unsigned long address, int reliable,
void show_opcodes(u8 *rip, const char *loglvl)
{
- unsigned int code_prologue = code_bytes * 43 / OPCODE_BUFSIZE;
+#define OPCODE_BUFSIZE 64
+ unsigned int code_prologue = OPCODE_BUFSIZE * 43 / OPCODE_BUFSIZE;
+ u8 opcodes[OPCODE_BUFSIZE];
u8 *ip;
int i;
printk("%sCode: ", loglvl);
ip = (u8 *)rip - code_prologue;
- if (probe_kernel_read(opcodes, ip, code_bytes)) {
+ if (probe_kernel_read(opcodes, ip, OPCODE_BUFSIZE)) {
pr_cont(" Bad RIP value.\n");
return;
}
- for (i = 0; i < code_bytes; i++, ip++) {
+ for (i = 0; i < OPCODE_BUFSIZE; i++, ip++) {
if (ip == (u8 *)rip)
pr_cont("<%02x> ", opcodes[i]);
else
@@ -387,34 +385,6 @@ void die(const char *str, struct pt_regs *regs, long err)
oops_end(flags, regs, sig);
}
-static int __init code_bytes_setup(char *s)
-{
- unsigned long val;
- ssize_t ret;
-
- if (!s)
- return -EINVAL;
-
- ret = kstrtoul(s, 0, &val);
- if (ret)
- return ret;
-
- code_bytes = val;
- if (code_bytes > 8192)
- code_bytes = 8192;
-
- if (code_bytes > OPCODE_BUFSIZE) {
- u8 *new_buf = kzalloc(code_bytes, GFP_KERNEL);
- if (!new_buf)
- return -ENOMEM;
-
- opcodes = new_buf;
- }
-
- return 1;
-}
-__setup("code_bytes=", code_bytes_setup);
-
void show_regs(struct pt_regs *regs)
{
bool all = true;
--
Regards/Gruss,
Boris.
Good mailing practices for 400: avoid top-posting and trim the reply.
next prev parent reply other threads:[~2018-03-08 10:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-06 9:49 [PATCH 0/9] x86/dumpstack: Cleanups and user opcode bytes Code: section, v1 Borislav Petkov
2018-03-06 9:49 ` [PATCH 1/9] panic: Add closing panic marker parenthesis Borislav Petkov
2018-03-08 11:03 ` [tip:core/core] " tip-bot for Borislav Petkov
2018-03-06 9:49 ` [PATCH 2/9] x86/fault: Do not print IP in show_fault_oops() Borislav Petkov
2018-03-08 11:09 ` [tip:x86/cleanups] " tip-bot for Borislav Petkov
2018-03-06 9:49 ` [PATCH 3/9] x86/dumpstack: Unify show_regs() Borislav Petkov
2018-03-08 11:10 ` [tip:x86/cleanups] " tip-bot for Borislav Petkov
2018-03-06 9:49 ` [PATCH 4/9] x86/dumpstack: Carve out Code: dumping into a function Borislav Petkov
2018-03-06 9:49 ` [PATCH 5/9] x86/dumpstack: Improve opcodes dumping in the Code: section Borislav Petkov
2018-03-06 18:47 ` Linus Torvalds
2018-03-07 10:13 ` Borislav Petkov
2018-03-07 13:25 ` Josh Poimboeuf
2018-03-07 14:16 ` Borislav Petkov
2018-03-07 21:08 ` Linus Torvalds
2018-03-08 10:16 ` Borislav Petkov [this message]
2018-03-08 18:00 ` Linus Torvalds
2018-03-08 22:36 ` Borislav Petkov
2018-03-08 23:20 ` Linus Torvalds
2018-03-09 10:15 ` Borislav Petkov
2018-03-06 9:49 ` [PATCH 6/9] x86/dumpstack: Add loglevel argument to show_opcodes() Borislav Petkov
2018-03-06 9:49 ` [PATCH 7/9] x86/fault: Dump user opcode bytes on fatal faults Borislav Petkov
2018-03-06 9:49 ` [PATCH 8/9] x86/dumpstack: Add a show_ip() function Borislav Petkov
2018-03-06 9:49 ` [PATCH 9/9] x86/dumpstack: Save first regs set for the executive summary Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180308101628.GA21166@pd.tnic \
--to=bp@alien8.de \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.