Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1196390

Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous

From Andy Lutomirski <luto@amacapital.net>
Newsgroups linux.kernel
Subject Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous
Date 2015-07-30 21:30 +0200
Message-ID <pS1GG-7H3-13@gated-at.bofh.it> (permalink)
References <pR5CG-86P-19@gated-at.bofh.it> <pR5Mn-8i5-11@gated-at.bofh.it> <pS0hA-5z1-9@gated-at.bofh.it> <pS0AW-6aH-25@gated-at.bofh.it> <pS0Uh-6xm-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thu, Jul 30, 2015 at 11:35 AM, Boris Ostrovsky
<boris.ostrovsky@oracle.com> wrote:
> On 07/30/2015 02:14 PM, Andy Lutomirski wrote:
>>
>> On Thu, Jul 30, 2015 at 10:56 AM, Boris Ostrovsky
>> <boris.ostrovsky@oracle.com> wrote:
>>>
>>> On 07/28/2015 01:29 AM, Andy Lutomirski wrote:
>>>
>>>> +
>>>> +static inline void load_mm_ldt(struct mm_struct *mm)
>>>> +{
>>>> +       struct ldt_struct *ldt;
>>>> +       DEBUG_LOCKS_WARN_ON(!irqs_disabled());
>>>
>>>
>>>
>>> I thought this was supposed to be checking preemptible()?
>>
>> v6 fixes that.  Check your future inbox :)  I'm goint to rework the
>> Xen bit too based on the long discussion.
>>
>> Is that the only failure you're seeing?
>
>
> Yes.
>
>> ldt_gdt_32 passes on 64-bit for me
>
>
> With your patch:
>
> root@haswell> uname -a
> Linux dhcp-burlington7-2nd-B-east-10-152-55-89.usdhcp.oraclecorp.com
> 4.2.0-rc4 #107 SMP Thu Jul 30 11:05:19 EDT 2015 x86_64 x86_64 x86_64
> GNU/Linux
> root@haswell> cd tmp/linux/tools/testing/selftests/x86/
> root@haswell> ls -l ldt_gdt_32
> -rwxr-xr-x 1 root root 25975 Jul 30 11:48 ldt_gdt_32
> root@haswell> ./ldt_gdt_32
> [OK]    LDT entry 0 has AR 0x0040FA00 and limit 0x0000000A
> [OK]    LDT entry 0 has AR 0x00C0FA00 and limit 0x0000AFFF
> [OK]    LDT entry 1 is invalid
> [OK]    LDT entry 2 has AR 0x00C0FA00 and limit 0x0000AFFF
> [OK]    LDT entry 1 is invalid
> [OK]    LDT entry 2 has AR 0x00C0FA00 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00D0FA00 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00D07A00 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00907A00 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00D07200 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00D07000 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00D07400 and limit 0x0000AFFF
> [OK]    LDT entry 2 has AR 0x00507600 and limit 0x0000000A
> [OK]    LDT entry 2 has AR 0x00507E00 and limit 0x0000000A
> [OK]    LDT entry 2 has AR 0x00507C00 and limit 0x0000000A
> [OK]    LDT entry 2 has AR 0x00507A00 and limit 0x0000000A
> [OK]    LDT entry 2 has AR 0x00507800 and limit 0x0000000A
> [RUN]   Test fork
> [OK]    LDT entry 2 has AR 0x00507800 and limit 0x0000000A
> [OK]    LDT entry 1 is invalid
> [OK]    Child succeeded
> [RUN]   Test size
> [DONE]  Size test
> [OK]    modify_ldt failure 22
> [OK]    LDT entry 0 has AR 0x0000F200 and limit 0x00000000
> [OK]    LDT entry 0 has AR 0x00007200 and limit 0x00000000
> [OK]    LDT entry 0 has AR 0x0000F000 and limit 0x00000000
> [OK]    LDT entry 0 has AR 0x00007200 and limit 0x00000000
> [OK]    LDT entry 0 has AR 0x00007000 and limit 0x00000001
> [OK]    LDT entry 0 has AR 0x00007000 and limit 0x00000000
> [OK]    LDT entry 0 is invalid
> [OK]    LDT entry 0 has AR 0x0040F200 and limit 0x00000000
> [OK]    LDT entry 0 is invalid
> [RUN]   Cross-CPU LDT invalidation
> Segmentation fault (core dumped)

That's not good.

Can you backtrace it?  (I.e. compite ldt_gdt_32 with -g and load the
core dumb in gdb?)  My best guesses are either a signal delivery
failure (although that shouldn't be a problem for 32-bit userspace on
any kernel) or an actual LDT access fault, and the latter would be
interesting.

I haven't been able to reproduce this.
--
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/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v5 0/4] x86: modify_ldt improvement, test, and config option Andy Lutomirski <luto@kernel.org> - 2015-07-28 07:40 +0200
  [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous Andy Lutomirski <luto@kernel.org> - 2015-07-28 07:40 +0200
    Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous Borislav Petkov <bp@alien8.de> - 2015-07-30 09:50 +0200
    Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous Boris Ostrovsky <boris.ostrovsky@oracle.com> - 2015-07-30 20:40 +0200
      Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous Andy Lutomirski <luto@amacapital.net> - 2015-07-30 21:30 +0200
        Re: [PATCH v5 2/4] x86/ldt: Make modify_ldt synchronous Boris Ostrovsky <boris.ostrovsky@oracle.com> - 2015-07-31 19:00 +0200
  [PATCH v5 3/4] selftests/x86, x86/ldt: Add a selftest for modify_ldt Andy Lutomirski <luto@kernel.org> - 2015-07-28 07:40 +0200
  [PATCH v5 4/4] x86/ldt: Make modify_ldt optional Andy Lutomirski <luto@kernel.org> - 2015-07-28 07:40 +0200
    Re: [PATCH v5 4/4] x86/ldt: Make modify_ldt optional Kees Cook <keescook@chromium.org> - 2015-07-28 22:50 +0200
      Re: [PATCH v5 4/4] x86/ldt: Make modify_ldt optional Willy Tarreau <w@1wt.eu> - 2015-07-28 23:00 +0200
  Re: [PATCH v5 0/4] x86: modify_ldt improvement, test, and config  option Boris Ostrovsky <boris.ostrovsky@oracle.com> - 2015-07-30 18:00 +0200
    Re: [PATCH v5 0/4] x86: modify_ldt improvement, test, and config  option Borislav Petkov <bp@alien8.de> - 2015-07-30 18:10 +0200

csiph-web