Messages in this thread Patch in this message | | | Date | Wed, 12 May 2004 14:32:33 -0700 | From | "Randy.Dunlap" <> | Subject | Re: [Fastboot] Re: [announce] kexec for linux 2.6.6 |
| |
On 12 May 2004 10:57:27 -0600 Eric W. Biederman wrote:
| Ulrich Drepper <drepper@redhat.com> writes: | | > Eric W. Biederman wrote: | > | > > As a first draft we should be able to use the standard ELF mechanisms | > > for this. It is not like PIC shared libraries were new. Or is | > > there some specific problem you are thinking of with respect to | > > randomization? | > | > The official kernel does not have vdso randomization. Ingo has a patch | > for the Red Hat kernel which is used in the FC2 kernel. The patch | > effectively only changes the location at which the vdso is mapped. It | > does not change the vdso content. So the __kernel_vsyscall symbol in | > the vdso's symbol table is not changed.
[1:] | > AT_SYSINFO is the right way to go forward but it is not directly | > accessible to userlevel code. And it is no pointer which will make | > architectures with function descriptors unhappy. | | It sounds like the vdso just needs to be treated as a prelinked | vdso. You can find everything you need with AT_SYSINFO_EHDR. | | In the case of function descriptors they should be in a data segment | that can get copied to another page, and corrected. Leaving the code | segment at it's randomized location.
Andrew tells me that he is OK with reserving a syscall number for kexec, which is easy & quick. I don't know when vdso will be available (for non-x86[2]) or when the AT_SYSINFO data will work for userlevel code[1. above].
So is there any reason not to reserve the syscall number for kexec for now? (patch is below)
-- ~Randy
[2] kexec is currently only available for x86, but there is interest in it for ia64 and ppc64 at least.
diff -Naurp -X /home/rddunlap/doc/dontdiff-osdl linux-266-pv/arch/i386/kernel/entry.S linux-266-kexec/arch/i386/kernel/entry.S --- linux-266-pv/arch/i386/kernel/entry.S 2004-05-09 19:32:26.000000000 -0700 +++ linux-266-kexec/arch/i386/kernel/entry.S 2004-05-11 16:46:27.000000000 -0700 @@ -891,5 +891,6 @@ ENTRY(sys_call_table) .long sys_mq_timedreceive /* 280 */ .long sys_mq_notify .long sys_mq_getsetattr + .long sys_ni_syscall /* reserved for kexec */ syscall_table_size=(.-sys_call_table) diff -Naurp -X /home/rddunlap/doc/dontdiff-osdl linux-266-pv/include/asm-i386/unistd.h linux-266-kexec/include/asm-i386/unistd.h --- linux-266-pv/include/asm-i386/unistd.h 2004-05-09 19:32:52.000000000 -0700 +++ linux-266-kexec/include/asm-i386/unistd.h 2004-05-11 16:45:32.000000000 -0700 @@ -288,8 +288,9 @@ #define __NR_mq_timedreceive (__NR_mq_open+3) #define __NR_mq_notify (__NR_mq_open+4) #define __NR_mq_getsetattr (__NR_mq_open+5) +#define __NR_sys_kexec_load 283 -#define NR_syscalls 283 +#define NR_syscalls 284 /* user-visible error numbers are in the range -1 - -124: see <asm-i386/errno.h> */ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |