From: Josh Triplett <josh@joshtriplett.org>
To: Alexander van Heukelum <heukelum@fastmail.fm>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
x86@kernel.org, Len Brown <len.brown@intel.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
"H. Peter Anvin" <hpa@zytor.com>,
virtualization@lists.linux-foundation.org,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
David Herrmann <dh.herrmann@gmail.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Seiji Aguchi <seiji.aguchi@hds.com>, Jiri Slaby <jslaby@suse.cz>,
Alok Kataria <akataria@vmware.com>,
Jesper Nilsson <jesper.nilsson@axis.com>,
Andi Kleen <ak@linux.intel.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Ingo Molnar <mingo@redhat.com>,
Steven Rostedt <rostedt@goodmis.org>,
xen-devel@lists.xenproject.org, Borislav Petkov <bp@suse.de>,
Fenghua Yu <fenghua.yu@intel.com>,
Kees Cook <keescook@chromium.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Ross
Subject: Re: [PATCH 2/3] x86: tss: Eliminate fragile calculation of TSS segment limit
Date: Fri, 1 Nov 2013 09:40:56 -0700 [thread overview]
Message-ID: <20131101164055.GB32434@leaf> (raw)
In-Reply-To: <1383249734.5399.41325681.3DEA6791@webmail.messagingengine.com>
On Thu, Oct 31, 2013 at 09:02:14PM +0100, Alexander van Heukelum wrote:
> Hi Josh,
>
> On Tue, Oct 22, 2013, at 3:34, Josh Triplett wrote:
> > __set_tss_desc has a complex calculation of the TSS segment limit,
> > duplicating the quirky details of the I/O bitmap array length, and
> > requiring a complex comment to explain. Replace that calculation with a
> > simpler one based on the offsetof the "stack" field that follows the
> > array.
> >
> > That then removes the last use of IO_BITMAP_OFFSET, so delete it.
> >
> > Signed-off-by: Josh Triplett <josh@joshtriplett.org>
> > ---
> > arch/x86/include/asm/desc.h | 11 +----------
> > arch/x86/include/asm/processor.h | 3 ++-
> > 2 files changed, 3 insertions(+), 11 deletions(-)
> >
> > diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
> > index b90e5df..17ac92f 100644
> > --- a/arch/x86/include/asm/desc.h
> > +++ b/arch/x86/include/asm/desc.h
> > @@ -177,16 +177,7 @@ static inline void __set_tss_desc(unsigned cpu, unsigned int entry, void *addr)
> > struct desc_struct *d = get_cpu_gdt_table(cpu);
> > tss_desc tss;
> >
> > - /*
> > - * sizeof(unsigned long) coming from an extra "long" at the end
> > - * of the iobitmap. See tss_struct definition in processor.h
> > - *
> > - * -1? seg base+limit should be pointing to the address of the
> > - * last valid byte
> > - */
> > - set_tssldt_descriptor(&tss, (unsigned long)addr, DESC_TSS,
> > - IO_BITMAP_OFFSET + IO_BITMAP_BYTES +
> > - sizeof(unsigned long) - 1);
> > + set_tssldt_descriptor(&tss, (unsigned long)addr, DESC_TSS, TSS_LIMIT);
> > write_gdt_entry(d, entry, &tss, DESC_TSS);
> > }
> >
> > diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> > index 987c75e..03d3003 100644
> > --- a/arch/x86/include/asm/processor.h
> > +++ b/arch/x86/include/asm/processor.h
> > @@ -259,9 +259,10 @@ struct x86_hw_tss {
> > #define IO_BITMAP_BITS 65536
> > #define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
> > #define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
> > -#define IO_BITMAP_OFFSET offsetof(struct tss_struct, io_bitmap)
> > #define INVALID_IO_BITMAP_OFFSET 0x8000
> >
> > +#define TSS_LIMIT (offsetof(struct tss_struct, stack) - 1)
> > +
>
> I wonder if the 'stack' in tss_struct has any meaning anymore. Can it be removed?
> If so, the offsetof can be changed to sizeof(struct tss_struct), which looks more
> natural to me.
That might be possible, if nothing references the stack. The obvious
references would be easy to search for, but I'd be concerned that
something might reference the stack in some non-obvious way, like "right
after the TSS base+limit", which a search wouldn't necessarily turn up.
In any case, that change could easily occur in another patch on top of
this one.
> Even so, I think this is already an improvement.
>
> Acked-by: Alexander van Heukelum <heukelum@fastmail.fm>
Thanks.
- Josh Triplett
next prev parent reply other threads:[~2013-11-01 16:40 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-22 2:33 [PATCH 0/3] x86: Support compiling out userspace I/O (iopl and ioperm) Josh Triplett
2013-10-22 2:34 ` [PATCH 1/3] x86: process: Unify 32-bit and 64-bit copy_thread I/O bitmap handling Josh Triplett
2013-10-30 22:21 ` Kees Cook
2013-10-31 20:01 ` Alexander van Heukelum
2013-11-01 16:33 ` Josh Triplett
2013-10-22 2:34 ` [PATCH 2/3] x86: tss: Eliminate fragile calculation of TSS segment limit Josh Triplett
2013-10-30 22:22 ` Kees Cook
2013-10-30 22:53 ` H. Peter Anvin
2013-10-31 11:17 ` Josh Triplett
2013-10-31 11:12 ` Josh Triplett
2013-10-31 20:02 ` Alexander van Heukelum
2013-11-01 16:40 ` Josh Triplett [this message]
2013-10-22 2:35 ` [PATCH 3/3] x86: Support compiling out userspace I/O (iopl and ioperm) Josh Triplett
2013-10-26 3:17 ` Stephen Hemminger
2013-10-26 4:30 ` Kees Cook
2013-10-31 20:04 ` Alexander van Heukelum
2013-11-01 17:19 ` Josh Triplett
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=20131101164055.GB32434@leaf \
--to=josh@joshtriplett.org \
--cc=ak@linux.intel.com \
--cc=akataria@vmware.com \
--cc=bp@suse.de \
--cc=daniel.lezcano@linaro.org \
--cc=dh.herrmann@gmail.com \
--cc=fenghua.yu@intel.com \
--cc=fweisbec@gmail.com \
--cc=heukelum@fastmail.fm \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=jesper.nilsson@axis.com \
--cc=jslaby@suse.cz \
--cc=keescook@chromium.org \
--cc=konrad.wilk@oracle.com \
--cc=len.brown@intel.com \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=paul.gortmaker@windriver.com \
--cc=raghavendra.kt@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=seiji.aguchi@hds.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.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;
as well as URLs for NNTP newsgroup(s).