From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x224rSCb0GmY1AAkmWmaYL/gQ24YU9pulBa2KaJp4iO0s4cUZ+qYrtEl05QsnlxaRq1Q3H6gG ARC-Seal: i=1; a=rsa-sha256; t=1517217519; cv=none; d=google.com; s=arc-20160816; b=USEz8zwiH3UdNFIqcHYdQoIrGwbJqB1wGtQE6MkVb4Ks5dK+jFj5YdvJg+xv85pJhh o0FwybiboUA+dw9wPmO/je/sL+bs+vCRZI0sdTfqbEPAATOEO7oS1eHvSHloZy3Ek8LO xdkQB3ShItyVG7S01EmSc6g5c1csFxyTbX36Fj33wN7mWT/FDN5FoVoxx0TZQgtfG9z0 qUGr/9Du0zlblYfMN9Sg71ia6RJ1EkT9+Q1oN0Om1D2kzeaF+F05o6a9EM0rf2QQEsq0 ixyC2J0VZ9HK+t1Frh5bqYP6I30fn4n1afdizWEWc3HClGhRLZurYzKPPz4LgcgxOuJP x2kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=j87NgzlNplcXS5I9ZdzSLGRlUJGNGP+y7Gezcy2J5xA=; b=Uy4ynygrS+EXYQI7DKQptzrfj7iXSyxkvt/EyiLVFLwc5gyNtblvNVmmyhbhkIZ9uU Fs63QtPPmXqV4qzgWJhEpULMhV+oJxUQiYUgkpRCU/jm3PbvoPpfNkNRCJW8nnOJgoHS Q6zS/TR6vaQ8kT5o5yraXjG9LXsyQrB50Tn/ssFQsYmlbXSH3tn3i32UbsqeN0Aht3+g 5+r4kra5WeBin/+wJiaG7eYynfAYkJu2XG5GTxGKyUD2RgiE+S7aoHtB8Q8b8Hgm3kru htviOey7z2/qEhpmENyVkQPmLgF+6gTyUqN23/bhOVc11Yw3V7GEKifQWyLo1nWAEqL9 LqOA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kselftest-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kselftest-owner@vger.kernel.org Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kselftest-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kselftest-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751749AbeA2JSi (ORCPT ); Mon, 29 Jan 2018 04:18:38 -0500 Received: from terminus.zytor.com ([65.50.211.136]:36425 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751701AbeA2JSh (ORCPT ); Mon, 29 Jan 2018 04:18:37 -0500 Subject: Re: selftests/x86/fsgsbase_64 test problem To: Andy Lutomirski Cc: Borislav Petkov , Dan Rue , Shuah Khan , Ingo Molnar , Dmitry Safonov , "open list:KERNEL SELFTEST FRAMEWORK" , LKML References: <20180126153631.ha7yc33fj5uhitjo@xps> From: "H. Peter Anvin" Message-ID: <46328204-e363-e517-f30c-c8c94ac1442c@zytor.com> Date: Mon, 29 Jan 2018 01:13:59 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kselftest-owner@vger.kernel.org X-Mailing-List: linux-kselftest@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590669876861238825?= X-GMAIL-MSGID: =?utf-8?q?1590917877561273762?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On 01/28/18 11:21, Andy Lutomirski wrote: >> >> I think the bug is here. I think that, when writing a NULL selector >> to DS, ES, FS, or GS, Intel CPUs incorrectly set DPL == RPL, whereas >> they should set DPL to 3. > > As an experiment, I did this: > > DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { > + [0] = { .dpl = 3, }, > + > > This had no apparent effect. I was hoping that maybe loading NULL > into a selector would copy DPL from from gdt[0], but it seems like it > doesn't. > GDT[0] doesn't actually exist. It is pretty much scratch space (I have suggested using it for the gsbase once all those issues get sorted out, because it lets the paranoid code do something like: rdgsbase %rax push %rax /* Save old gsbase */ push %rax /* Reserve space on stack */ sgdt -2(%rsp) /* We don't care about the limit */ pop %rax /* %rax <- gdtbase */ mov (%rax),%rax /* GDT[0] holds the gsbase for this cpu */ wrgsbase %rax