From: Andy Lutomirski <luto@amacapital.net>
To: Borislav Petkov <bp@alien8.de>
Cc: Tony Luck <tony.luck@intel.com>, Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Andy Lutomirski <luto@kernel.org>,
Dan Williams <dan.j.williams@intel.com>, Robert <elliott@hpe.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
linux-nvdimm <linux-nvdimm@ml01.01.org>, X86 ML <x86@kernel.org>
Subject: Re: [PATCH v7 1/3] x86: Add classes to exception tables
Date: Wed, 6 Jan 2016 09:54:19 -0800 [thread overview]
Message-ID: <CALCETrVXD5YB_1UzR4LnSOCgV+ZzhDi9JRZrcxhMAjbvSzO6MQ@mail.gmail.com> (raw)
In-Reply-To: <20160106123346.GC19507@pd.tnic>
On Wed, Jan 6, 2016 at 4:33 AM, Borislav Petkov <bp@alien8.de> wrote:
> On Wed, Dec 30, 2015 at 09:59:29AM -0800, Tony Luck wrote:
>> Starting with a patch from Andy Lutomirski <luto@amacapital.net>
>> that used linker relocation trickery to free up a couple of bits
>> in the "fixup" field of the exception table (and generalized the
>> uaccess_err hack to use one of the classes).
>
> So I still think that the other idea Andy gave with putting the handler
> in the exception table is much cleaner and straightforward.
>
> Here's a totally untested patch which at least builds here. I think this
> approach is much more extensible and simpler for the price of a couple
> of KBs of __ex_table size.
>
> ---
> diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
> index 189679aba703..43b509c88b13 100644
> --- a/arch/x86/include/asm/asm.h
> +++ b/arch/x86/include/asm/asm.h
> @@ -44,18 +44,20 @@
>
> /* Exception table entry */
> #ifdef __ASSEMBLY__
> -# define _ASM_EXTABLE(from,to) \
> +# define _ASM_EXTABLE(from,to) \
> .pushsection "__ex_table","a" ; \
> .balign 8 ; \
> .long (from) - . ; \
> .long (to) - . ; \
> + .long 0 - .; \
I assume that this zero is to save the couple of bytes for the
relocation entry on relocatable kernels?
If so, ...
> +inline ex_handler_t ex_fixup_handler(const struct exception_table_entry *x)
> +{
> + return (ex_handler_t)&x->handler + x->handler;
I would check for zero here, because...
> + new_ip = ex_fixup_addr(e);
> + handler = ex_fixup_handler(e);
> +
> + if (!handler)
> + handler = ex_handler_default;
the !handler condition here will never trigger because the offset was
already applied.
Otherwise this looks generally sane.
--Andy
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2016-01-06 17:54 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-05 0:05 [PATCH v7 0/3] Machine check recovery when kernel accesses poison Tony Luck
2015-12-30 17:59 ` [PATCH v7 1/3] x86: Add classes to exception tables Tony Luck
2016-01-06 12:33 ` Borislav Petkov
2016-01-06 17:35 ` Luck, Tony
2016-01-06 17:48 ` Linus Torvalds
2016-01-06 17:54 ` Andy Lutomirski [this message]
2016-01-06 17:59 ` Borislav Petkov
2016-01-06 18:07 ` Andy Lutomirski
2016-01-06 19:42 ` Borislav Petkov
2016-01-07 12:11 ` Borislav Petkov
2016-01-07 18:22 ` Luck, Tony
2016-01-08 1:45 ` Luck, Tony
2016-01-08 10:37 ` Borislav Petkov
2016-01-08 16:29 ` Luck, Tony
2016-01-08 17:20 ` Borislav Petkov
2016-01-08 22:29 ` Brian Gerst
2016-01-08 5:30 ` Luck, Tony
2016-01-08 10:41 ` Borislav Petkov
2016-01-06 12:36 ` Borislav Petkov
2015-12-31 19:40 ` [PATCH v7 2/3] x86, mce: Check for faults tagged in EXTABLE_CLASS_FAULT exception table entries Tony Luck
2015-12-31 19:43 ` [PATCH v7 3/3] x86, mce: Add __mcsafe_copy() Tony Luck
2016-01-06 4:42 ` Dan Williams
2016-01-06 7:06 ` Luck, Tony
2016-01-06 7:11 ` Dan Williams
2016-01-06 16:37 ` Dan Williams
2016-01-06 16:57 ` Luck, Tony
2016-01-06 17:05 ` Dan Williams
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=CALCETrVXD5YB_1UzR4LnSOCgV+ZzhDi9JRZrcxhMAjbvSzO6MQ@mail.gmail.com \
--to=luto@amacapital.net \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=elliott@hpe.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvdimm@ml01.01.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=tony.luck@intel.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox