[PATCH] exec-shield style vdso move.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Rusty Russell wrote:
> So, is everyone happy with this smerge of Ingo and Gerd's work?
> Reposted below.
>   

Quite happy.  Getting back as much lowmem as possible is more beneficial.

> diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .23560-linux-2.6.17-rc4-git3/arch/i386/kernel/entry.S .23560-linux-2.6.17-rc4-git3.updated/arch/i386/kernel/entry.S
> --- .23560-linux-2.6.17-rc4-git3/arch/i386/kernel/entry.S	2006-05-16 10:50:48.000000000 +1000
> +++ .23560-linux-2.6.17-rc4-git3.updated/arch/i386/kernel/entry.S	2006-05-17 17:10:49.000000000 +1000
> @@ -184,8 +184,12 @@ sysenter_past_esp:
>  	pushl %ebp
>  	pushfl
>  	pushl $(__USER_CS)
> -	pushl $SYSENTER_RETURN
> -
> +	/*
> +	 * Push current_thread_info()->sysenter_return to the stack.
> +	 * A tiny bit of offset fixup is necessary - 4*4 means the 4 words
> +	 * pushed above; +8 corresponds to copy_thread's esp0 setting.
> +	 */
> +	pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp)
>   

You've done a nice job commenting this, but a defined constant for the 8 
would be nicer.

>  
> @@ -138,6 +139,10 @@ void set_pmd_pfn(unsigned long vaddr, un
>  	__flush_tlb_one(vaddr);
>  }
>  
> +static int nr_fixmaps = 0;
> +unsigned long __FIXADDR_TOP = 0xfffff000;
> +EXPORT_SYMBOL(__FIXADDR_TOP);
> +
>   

Never mind.  My comments are in reverse order here.

>  void __set_fixmap (enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
>  {
>  	unsigned long address = __fix_to_virt(idx);
> diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .23560-linux-2.6.17-rc4-git3/include/asm-i386/fixmap.h .23560-linux-2.6.17-rc4-git3.updated/include/asm-i386/fixmap.h
> --- .23560-linux-2.6.17-rc4-git3/include/asm-i386/fixmap.h	2006-03-23 12:43:10.000000000 +1100
> +++ .23560-linux-2.6.17-rc4-git3.updated/include/asm-i386/fixmap.h	2006-05-17 17:10:49.000000000 +1000
> @@ -20,7 +20,7 @@
>   * Leave one empty page between vmalloc'ed areas and
>   * the start of the fixmap.
>   */
> -#define __FIXADDR_TOP	0xfffff000
> +extern unsigned long __FIXADDR_TOP;
>  
>  #ifndef __ASSEMBLY__
>  #include <linux/kernel.h>
> @@ -95,6 +95,8 @@ enum fixed_addresses {
>  extern void __set_fixmap (enum fixed_addresses idx,
>  					unsigned long phys, pgprot_t flags);
>  
> +extern void set_fixaddr_top(unsigned long top);
> +

I don't see where this gets called anywhere ... so how does 
__FIXADDR_TOP get initialized?

Answered non-linearly above.

Zach

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux