On Mon, Nov 27, 2017 at 11:49:07AM +0100, Ingo Molnar wrote:
> From: Dave Hansen <[email protected]>
> 
> Normally, a process has a NULL mm->context.ldt.  But, there is a
> syscall for a process to set a new one.  If a process does that,
> the LDT be mapped into the user page tables, just like the
> default copy.
> 
> The original KAISER patch missed this case.
> 
> Signed-off-by: Dave Hansen <[email protected]>
> Signed-off-by: Thomas Gleixner <[email protected]>
> Cc: Andy Lutomirski <[email protected]>
> Cc: Borislav Petkov <[email protected]>
> Cc: Brian Gerst <[email protected]>
> Cc: Denys Vlasenko <[email protected]>
> Cc: H. Peter Anvin <[email protected]>
> Cc: Josh Poimboeuf <[email protected]>
> Cc: Linus Torvalds <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Rik van Riel <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Link: https://lkml.kernel.org/r/[email protected]
> Signed-off-by: Ingo Molnar <[email protected]>
> ---
>  arch/x86/kernel/ldt.c | 25 ++++++++++++++++++++-----
>  1 file changed, 20 insertions(+), 5 deletions(-)
> 
... 
> +
>  /* The caller must call finalize_ldt_struct on the result. LDT starts 
> zeroed. */
>  static struct ldt_struct *alloc_ldt_struct(unsigned int num_entries)
>  {
>       struct ldt_struct *new_ldt;
>       unsigned int alloc_size;
> +     int ret;
>  
>       if (num_entries > LDT_ENTRIES)
>               return NULL;
> @@ -89,6 +100,12 @@ static struct ldt_struct *alloc_ldt_struct(unsigned int 
> num_entries)
>               return NULL;
>       }
>  
> +     ret = kaiser_add_mapping((unsigned long)new_ldt->entries, alloc_size,
> +                              __PAGE_KERNEL | _PAGE_GLOBAL);

This results in:

arch/x86/kernel/ldt.c: In function ‘alloc_ldt_struct’:
arch/x86/kernel/ldt.c:104:6: warning: large integer implicitly truncated to
unsigned type [-Woverflow]
      __PAGE_KERNEL | _PAGE_GLOBAL);
            ^

in ARCH=i386 builds with CONFIG_X86_PAE enabled. See
https://groups.google.com/forum/#!topic/cros-kernel-buildreports/8R41aX07daU

Guenter

Reply via email to