From patchwork Mon Feb 11 23:27:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Stoppa X-Patchwork-Id: 10806947 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C2BBF1399 for ; Mon, 11 Feb 2019 23:28:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B338A299FB for ; Mon, 11 Feb 2019 23:28:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A6C8D29A9D; Mon, 11 Feb 2019 23:28:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_WEB autolearn=no version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 42780299FB for ; Mon, 11 Feb 2019 23:28:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DE878E0194; Mon, 11 Feb 2019 18:28:17 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 1B6D88E0189; Mon, 11 Feb 2019 18:28:17 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 08C038E0194; Mon, 11 Feb 2019 18:28:17 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by kanga.kvack.org (Postfix) with ESMTP id A786B8E0189 for ; Mon, 11 Feb 2019 18:28:16 -0500 (EST) Received: by mail-wr1-f69.google.com with SMTP id f5so238662wrt.13 for ; Mon, 11 Feb 2019 15:28:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:reply-to:mime-version :content-transfer-encoding; bh=ziJEcxmH0HELRYpJ/Cx0XBIGaICt7y2RQVCxbSTmAUA=; b=byrPgjpwB8PEtG1zLcWq3arkivBhBCu5urTtzfD/T6C7lSAVkWPIiWDAc+tnChtggm 1bkCC7qcLPiOOLhDOYHy0/m+R9GOvwlz6n7SoWO+z3KG9jDY5Dhh3QvAgzrwE7D3gQ1Q xRSJHLLpIDEb10/wQkcMP7wxPMJRT1vHexDa6HpcWugqvmbjBPqgm6qwwWjM8eNuMOZ9 8e8v52d7XvjVtmwF3EkYyiiCKCX3787m76M3F0yaPWrWCMMWRW1/SBeLPE3a1bplCPHi imlIEvMTt0p1LM8cI99dNELDWMrCe/JPqsZzj9LO5mAmXQJAZCFptkYknWoV9y2jAeil Z1Yg== X-Gm-Message-State: AHQUAuacg20G0KuDEvUnRpAuoflMCxiUsoXBsyCwLXzUZIf+z3fnZNAI ewBM4Y7tsDhxsCLAuwWFVzTLfG67rWsvhM4cQdWG9GN8XJsbEmtbJauovzB1197SfKcfE+cMbkw JF5fzqanyqMM4BSd0wH2lUZw0oqNJFRwD7qRPAfWKFLbMQbFDv7ktPKZspc/0miZ+wag2gmiuHq dBx4yAj3ZjlYLHtUd3qLanrRBtBQVN0Klm+rZaVX5JeWO4y6o/0yqM7aSq+UhV8nillZv+X2ovW t39l9n+YxVWnPv3NtMKiDs05ETQPi+SrfqSyhR5UUq1cth7v/XreViWjg/tLjiTAn10IC0HLq+v t9j9Xk3uAv6Tux1QgisWK3j6LvY6KdWELjZulNZa9oOnIkjsdN1GJ+JIbYFaC0kYZgYM2YZlLct P X-Received: by 2002:a1c:7ec4:: with SMTP id z187mr462099wmc.43.1549927696200; Mon, 11 Feb 2019 15:28:16 -0800 (PST) X-Received: by 2002:a1c:7ec4:: with SMTP id z187mr462035wmc.43.1549927694940; Mon, 11 Feb 2019 15:28:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549927694; cv=none; d=google.com; s=arc-20160816; b=zozMLa8k5haKexxfISqKKXTMoKmqZRYt+9vI7ammM7EEgLo1ZwW6EUSd3BoxAhXqp8 71gTbxUyejuMFguj3uRve7ma+BqNcoW2nQSkAgULqyn6hvn4noUx/eze3vN4XTetVhST scFV6lqwJyeLPeqW9hF+I5uq3rQ6St0zfy1bmetqXuwsOxr7oWWvXDq0SHxHwZsE7Iy6 3zsKp897mM55wynlRIWDKZ+BGWrLjbWtxaE6KkQ+w9FtFPl1mTyhYRwNPWh+UU2qeBnI FLuHekO4YYWKXKe3dDpYUNsAeC2W7rTCctFYvvL+j5LCk6cCPRZ2SuoX/llMyxbbA7Yj 55+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=ziJEcxmH0HELRYpJ/Cx0XBIGaICt7y2RQVCxbSTmAUA=; b=kJrycb+ku0UwT8WhqTp4jpcND4Bz/pBge0plb8fo0WIOZ8OV3ZUctjXrwonebYeZGC mLyDAj994obh6G224RflyXo3+1rF0nlQViGoKqmq78Ria8s3Dg2nYnJbentdJdiP+UbU 9ZPwDq/J172qhKzWZTH3B/b5wJJYxF9e9KKDRrZ7PhJu7UtuQ27YZcwASKRZkiODcQvt eJM/A5wK4phdS8VK89/cACLoCBlOJmEi27jJL8/wk1UCJhqccP3ROuGc8yszMIfGRYlm hB71km6EwAJjkfeAcz+n+OpCrbyPh/fVXj6dODCra7aUeuP4VYaE6oPgjex/EBNiW6Tt 6N0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Tt9djI+4; spf=pass (google.com: domain of igor.stoppa@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=igor.stoppa@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id f193sor503445wme.9.2019.02.11.15.28.14 for (Google Transport Security); Mon, 11 Feb 2019 15:28:14 -0800 (PST) Received-SPF: pass (google.com: domain of igor.stoppa@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Tt9djI+4; spf=pass (google.com: domain of igor.stoppa@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=igor.stoppa@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=ziJEcxmH0HELRYpJ/Cx0XBIGaICt7y2RQVCxbSTmAUA=; b=Tt9djI+4tIxxQ5z9XBIXZPNsKwfr142LlXK+hQ65M9C24x2lFzeG66B1tVAsCYEHD5 lxkyRPZQ0d7NehS988SjU2aK0I7kZPVft7Vc+W/HY8bQPsWnifAgKghB7n90aodLDrnl lVPXX7q9YjeS2ulbNmlLXl6NtFYB5XvJEEgxMNocbquz7/szDVHN5yBdzXWilnSUIWV6 5lZKYRyJD3C9KP0rHanJWixPBBH9nGwy+o8iMGvBhmhP+XMzEYm2EF0bhpt1taB4s4z5 8y1TXoBB0V0MwKaVVuakzCSGEEpvjN4D1GunNHN9QYNv1W875CyqAi3osNxWduqQBsDv RurA== X-Google-Smtp-Source: AHgI3IYd7Ah0YVUADfwQ9vu0EMe24Nxeh6S4B8+ipAqvagFO0quTn9x8ysqtHCmL+w/wBQ5gyDPMFA== X-Received: by 2002:a1c:f50a:: with SMTP id t10mr493561wmh.126.1549927694511; Mon, 11 Feb 2019 15:28:14 -0800 (PST) Received: from localhost.localdomain (bba134232.alshamil.net.ae. [217.165.113.120]) by smtp.gmail.com with ESMTPSA id e67sm1470295wmg.1.2019.02.11.15.28.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Feb 2019 15:28:13 -0800 (PST) From: Igor Stoppa X-Google-Original-From: Igor Stoppa To: Cc: Igor Stoppa , Andy Lutomirski , Nadav Amit , Matthew Wilcox , Peter Zijlstra , Kees Cook , Dave Hansen , Mimi Zohar , Thiago Jung Bauermann , Ahmed Soliman , linux-integrity@vger.kernel.org, kernel-hardening@lists.openwall.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH v4 03/12] __wr_after_init: x86_64: randomize mapping offset Date: Tue, 12 Feb 2019 01:27:40 +0200 Message-Id: <378ee1e7e4c17e3bf6e49e1fb6c7cd9abd18ccfe.1549927666.git.igor.stoppa@huawei.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: References: Reply-To: Igor Stoppa MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP x86_64 specialized way of defining the base address for the alternate mapping used by write-rare. Since the kernel address space spans across 64TB and it is mapped into a used address space of 128TB, the kernel address space can be shifted by a random offset that is up to 64TB and page aligned. This is accomplished by providing arch-specific version of the function __init_wr_base() Signed-off-by: Igor Stoppa CC: Andy Lutomirski CC: Nadav Amit CC: Matthew Wilcox CC: Peter Zijlstra CC: Kees Cook CC: Dave Hansen CC: Mimi Zohar CC: Thiago Jung Bauermann CC: Ahmed Soliman CC: linux-integrity@vger.kernel.org CC: kernel-hardening@lists.openwall.com CC: linux-mm@kvack.org CC: linux-kernel@vger.kernel.org --- arch/x86/mm/Makefile | 2 ++ arch/x86/mm/prmem.c (new) | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 4b101dd6e52f..66652de1e2c7 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile @@ -53,3 +53,5 @@ obj-$(CONFIG_PAGE_TABLE_ISOLATION) += pti.o obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt.o obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_identity.o obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_boot.o + +obj-$(CONFIG_PRMEM) += prmem.o diff --git a/arch/x86/mm/prmem.c b/arch/x86/mm/prmem.c new file mode 100644 index 000000000000..b04fc03f92fb --- /dev/null +++ b/arch/x86/mm/prmem.c @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * prmem.c: Memory Protection Library - x86_64 backend + * + * (C) Copyright 2018-2019 Huawei Technologies Co. Ltd. + * Author: Igor Stoppa + */ + +#include +#include + +unsigned long __init __init_wr_base(void) +{ + /* + * Place 64TB of kernel address space within 128TB of user address + * space, at a random page aligned offset. + */ + return (((unsigned long)kaslr_get_random_long("WR Poke")) & + PAGE_MASK) % (64 * _BITUL(40)); +}