From: "Albert Cahalan" <acahalan@gmail.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: torvalds@osdl.org, jeremy@goop.org, mingo@elte.hu, ak@suse.de,
arjan@infradead.org, zach@vmware.com,
linux-kernel@vger.kernel.org
Subject: Re: Assignment of GDT entries
Date: Thu, 14 Sep 2006 02:19:51 -0400 [thread overview]
Message-ID: <787b0d920609132319y660c62c5rc245843aa55fd615@mail.gmail.com> (raw)
In-Reply-To: <m11wqf12hh.fsf@ebiederm.dsl.xmission.com>
On 9/14/06, Eric W. Biederman <ebiederm@xmission.com> wrote:
> I agree that the difference is annoying.
>
> However I just wrote a user space implementation of fork that
> is capable of copying a process from an i386 only kernel to a x86_64
> kernel, and executing there without having to detect the kernel type.
>
> It didn't takes hacks to accomplish that.
>
> The basic syscall is:
> int set_thread_area (struct user_desc *u_info);
> struct user_desc {
> unsigned int entry_number;
> unsigned long base_addr;
> unsigned int limit;
> unsigned int seg_32bit:1;
> unsigned int contents:2;
> unsigned int read_exec_only:1;
> unsigned int limit_in_pages:1;
> unsigned int seg_not_present:1;
> unsigned int useable:1;
> };
>
> If entry_number is -1 the kernel finds a free gdt entry and
> sets up the segment and returns with entry_number set to the
> segment number.
Eeeeeew.
So if I grabbed the first two slots before glibc got to
mess with them, glibc wouldn't break horribly?
If I grabbed one slot and glibc grabbed another, Wine
would be OK with the third instead of the second?
So basically it's not allowed to just grab the 3rd slot?
What if I want to find out what is already in use?
Am I supposed to iterate over all 8191 possible
GDT entries? How do I even tell how many slots
are available without using them all up?
Eeeeeeew. Well this was documented exactly nowhere.
The man page is even vague about entry_number,
meaning I had to dig in the kernel source (AMD manual
by my side) to find if that was a GDT slot or TLS slot,
as array index or byte offset, with or without the low bits
all set up for loading into the segment register, loaded for
me or not, etc.
next prev parent reply other threads:[~2006-09-14 6:19 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-14 4:06 Albert Cahalan
2006-09-14 4:44 ` Eric W. Biederman
2006-09-14 6:19 ` Albert Cahalan [this message]
2006-09-14 6:28 ` Zachary Amsden
2006-09-14 7:12 ` Albert Cahalan
2006-09-14 7:24 ` Zachary Amsden
2006-09-14 6:29 ` Jeremy Fitzhardinge
-- strict thread matches above, loose matches on Subject: below --
2006-09-15 7:55 Mikael Pettersson
2006-09-15 8:20 ` Jeremy Fitzhardinge
2006-09-15 8:58 ` Mikael Pettersson
2006-09-15 18:27 ` Jeremy Fitzhardinge
2006-09-14 3:23 Albert Cahalan
2006-09-14 6:11 ` Jeremy Fitzhardinge
2006-09-13 18:58 Jeremy Fitzhardinge
2006-09-13 19:16 ` Arjan van de Ven
2006-09-13 20:00 ` Alan Cox
2006-09-13 20:02 ` Jeremy Fitzhardinge
2006-09-13 20:20 ` Jeremy Fitzhardinge
2006-09-13 20:59 ` Zachary Amsden
2006-09-13 21:15 ` Jeremy Fitzhardinge
2006-09-13 21:35 ` Alan Cox
2006-09-14 0:25 ` Zachary Amsden
2006-09-14 1:40 ` Stephen Rothwell
2006-09-14 13:03 ` Alan Cox
2006-09-13 19:55 ` linux-os (Dick Johnson)
2006-09-13 20:08 ` Jeremy Fitzhardinge
2006-09-13 20:32 ` linux-os (Dick Johnson)
2006-09-13 21:21 ` Linus Torvalds
2006-09-13 21:47 ` Jeremy Fitzhardinge
2006-09-13 22:05 ` Linus Torvalds
2006-09-13 22:22 ` Jeremy Fitzhardinge
2006-09-14 6:00 ` Andi Kleen
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=787b0d920609132319y660c62c5rc245843aa55fd615@mail.gmail.com \
--to=acahalan@gmail.com \
--cc=ak@suse.de \
--cc=arjan@infradead.org \
--cc=ebiederm@xmission.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=torvalds@osdl.org \
--cc=zach@vmware.com \
/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
all inboxes | Powered by JetHome®