Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4417845imm; Mon, 18 Jun 2018 14:47:09 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK3HaqWvxEtmHjykO8LCv+IikR9kiwqqROvQJEs19a08tGYI1p0B/3/eg5VCN6x6zLMI0VJ X-Received: by 2002:a62:4282:: with SMTP id h2-v6mr15244129pfd.242.1529358429823; Mon, 18 Jun 2018 14:47:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529358429; cv=none; d=google.com; s=arc-20160816; b=DKfAInR3fBjlKsvCNLhCY//ro2dh9YGtCxCSYBC678VBfgQs5W8jC9lof0dducWnSt xOSSLpiY0ODZdt6ipB6oO+3X6YBB0wmnjh9lOONLQxNDp9wiMxooiPlj7jIx+g+5ecJf OnT4vaLDub25GqUzYWwPerKQO5WlaRKNCIY1uxPmlmKzXNvqQeoyJCVOY7+EUNuN3tjf GEZ7chqFqRBiQ8ZKBkC0SE6MlfCxvxkFuiWQolJ9FBmqkJteiMyQJD75omaaJGzEOQb2 tVIjSbAddKUhkyoKbbM5XvAqJ3GhrYw7tFkm6cOK0lOhK4y6wXZbfTOQI+E5fXBFvQC3 jzvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature :arc-authentication-results; bh=lS9iiRt6VXPiAP+Pv8Uyv3kf5RP4k3AQ63nOZKLLfDs=; b=TEyOyAkTdNArStZKw7QGyOwkDICIRKyrJ3TSolUzOVlfxtJPF1wHDuXvW0/8mAeJ7V dBSfBmeEC8EUzMk/DSZCwjSYsh+m2TC6lYfJM/UQlVSss6RMewp6s3eEhGizdGS2INdd yQ1lST7gkcU7NUKEPfcse9qIQycHrp1lfZyC1bqVYAHWq6yDyIHVijp+FXsM+KLjku69 sYougPTlVhGUNM2/QjbPZZZfXdvC8hLgn0qhJrqjR2ZVwAj9HRUU9PktCIPWCPhqoAH2 hal70ZiCbUfMq2VZP+ZtBKzGjoSA437+F0NzK0cck/1BKq+9YfZ+oOZ3+sGU/7OEX1jb HKWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SGzJCx4M; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l1-v6si13153812pga.589.2018.06.18.14.46.55; Mon, 18 Jun 2018 14:47:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SGzJCx4M; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936950AbeFRVot (ORCPT + 99 others); Mon, 18 Jun 2018 17:44:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:40388 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936504AbeFRVor (ORCPT ); Mon, 18 Jun 2018 17:44:47 -0400 Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8B6FB20874 for ; Mon, 18 Jun 2018 21:44:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1529358286; bh=gDw8i04v+PnkkUDymHS9ykQ+jmxZYRMZE4jHMJO8o/M=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=SGzJCx4MrpeTQuPJDZg1dnUpY6AmYGqyE8U09bxIvEIQbyGhv9effZP8FjAsE2P87 mkzltxoWYRPrOMe5Qmh2tp0ju5p9Z2yHyYz9LBWcORnIBhAu4vC6Vy2PfNGMJHDvoE cMCMky/tdi/OkYNhPbSK9+IEL1BTpMboqG/OstcY= Received: by mail-wm0-f44.google.com with SMTP id r15-v6so16483363wmc.1 for ; Mon, 18 Jun 2018 14:44:46 -0700 (PDT) X-Gm-Message-State: APt69E25ScFRCeSeNGjpx/qOI7S5BDbKD5XXiuUVnZjR9vH/g+6Si0cY MjsT8lgd0/S6Pa8KB+vTh4lTgpBAtl5LFH5L1AvDIA== X-Received: by 2002:a1c:f902:: with SMTP id x2-v6mr9232918wmh.116.1529358285009; Mon, 18 Jun 2018 14:44:45 -0700 (PDT) MIME-Version: 1.0 References: <20180607143807.3611-1-yu-cheng.yu@intel.com> <1528815820.8271.16.camel@2b52.sc.intel.com> <814fc15e80908d8630ff665be690ccbe6e69be88.camel@gmail.com> <1528988176.13101.15.camel@2b52.sc.intel.com> <2b77abb17dfaf58b7c23fac9d8603482e1887337.camel@gmail.com> In-Reply-To: <2b77abb17dfaf58b7c23fac9d8603482e1887337.camel@gmail.com> From: Andy Lutomirski Date: Mon, 18 Jun 2018 14:44:33 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 00/10] Control Flow Enforcement - Part (3) To: Balbir Singh Cc: Yu-cheng Yu , LKML , linux-doc@vger.kernel.org, Linux-MM , linux-arch , X86 ML , "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , "H. J. Lu" , "Shanbhogue, Vedvyas" , "Ravi V. Shankar" , Dave Hansen , Jonathan Corbet , Oleg Nesterov , Arnd Bergmann , mike.kravetz@oracle.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jun 16, 2018 at 8:16 PM Balbir Singh wrote: > > On Thu, 2018-06-14 at 07:56 -0700, Yu-cheng Yu wrote: > > On Thu, 2018-06-14 at 11:07 +1000, Balbir Singh wrote: > > > On Tue, 2018-06-12 at 08:03 -0700, Yu-cheng Yu wrote: > > > > On Tue, 2018-06-12 at 20:56 +1000, Balbir Singh wrote: > > > > > > > > > > On 08/06/18 00:37, Yu-cheng Yu wrote: > > > > > > This series introduces CET - Shadow stack > > > > > > > > > > > > At the high level, shadow stack is: > > > > > > > > > > > > Allocated from a task's address space with vm_flags VM_SHSTK; > > > > > > Its PTEs must be read-only and dirty; > > > > > > Fixed sized, but the default size can be changed by sys admin. > > > > > > > > > > > > For a forked child, the shadow stack is duplicated when the next > > > > > > shadow stack access takes place. > > > > > > > > > > > > For a pthread child, a new shadow stack is allocated. > > > > > > > > > > > > The signal handler uses the same shadow stack as the main program. > > > > > > > > > > > > > > > > Even with sigaltstack()? > > > > > > > > > > > > > Yes. > > > > > > I am not convinced that it would work, as we switch stacks, oveflow might > > > be an issue. I also forgot to bring up setcontext(2), I presume those > > > will get new shadow stacks > > > > Do you mean signal stack/sigaltstack overflow or swapcontext in a signal > > handler? > > > > I meant any combination of that. If there is a user space threads implementation that uses sigaltstack for switching threads > Anyone who does that is nuts. The whole point of user space threads is speed, and signals are very slow. For userspace threads to work, we need an API to allocate new shadow stacks, and we need to use the extremely awkwardly defined RSTORSSP stuff to switch. (I assume this is possible on an ISA level. The docs are bad, and the mnemonics for the relevant instructions are nonsensical.)