Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp3174784imj; Mon, 11 Feb 2019 15:30:15 -0800 (PST) X-Google-Smtp-Source: AHgI3IZ7yzWBZJ9ldZOqmKlWDuGl/n2jqDzk7CKlxO+k9/HKJSe0aQPZMuUTkTkY9GiPqEr96EtO X-Received: by 2002:a63:3206:: with SMTP id y6mr749892pgy.338.1549927815051; Mon, 11 Feb 2019 15:30:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549927815; cv=none; d=google.com; s=arc-20160816; b=ipI0+oU8UzoRHVwYoAIojdW5g1NzGolw+h2uUbsZKSkU7KYjHlMBMgCHe8r/0zx8+X GvaIjRLwJq74psAMMJSqQnX945Hp5WUexqMyq+Ww59VUMzpxosmaphMGcdskMvHlOsCL +OZHpUhyeUh1AYj/u0IyPKf6KMiwDDyU80f3P7usz9cjGO5l6kMyMdM6EIxUQyYa9mZ/ PUcNjPlu+FW4FE9sw+nPgVFQy0meVgaunIH1J1xTCvHlutzbwRkwawutoNIafa3IROFr rbwcHpc9t4Ge53EQmBPt/px4TF3l5We/2gbksxWg0X9069JH1zw/M/lO5Vae5ZdpvzWe YsAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:content-transfer-encoding:mime-version :reply-to:references:in-reply-to:message-id:date:subject:cc:from :dkim-signature; bh=ziJEcxmH0HELRYpJ/Cx0XBIGaICt7y2RQVCxbSTmAUA=; b=tDh50TdlXOIiXwTT3TG605EmWwAeovvZjiR6qXn2T0M3v9MSuYd4uZBYu0GXJBW+Pn 0ljgqJ8X5XU4YyRBfUOvLW6z/oirVeaYxVm5RV4nTzNgPWiYGl69hQ/D9eS0OW8Lh+Ox h0Fo5ioogGZn2pGsEe+5rp42EHUNIBfj7SxuV77WckPLOaBRj/0kl1ZQpWDCjvlqj+U5 FxDsph5mD6JKo7+DaDw/bKXqZrToUsIipiFSruGNWi1BTO4xwrcMzJy6XYgeNsb1ntST kRtaoEPMwPvRnCgxANFMjlfIy6PjHAW9xdGr4J3uVIBmYPx7Sf2vGXqQ0HcYNtBPhoXs /+bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=Tt9djI+4; 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=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u13si9007743pfm.226.2019.02.11.15.29.59; Mon, 11 Feb 2019 15:30:15 -0800 (PST) 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=fail header.i=@gmail.com header.s=20161025 header.b=Tt9djI+4; 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=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727928AbfBKX2U (ORCPT + 99 others); Mon, 11 Feb 2019 18:28:20 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:55624 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727132AbfBKX2Q (ORCPT ); Mon, 11 Feb 2019 18:28:16 -0500 Received: by mail-wm1-f66.google.com with SMTP id r17so990536wmh.5; Mon, 11 Feb 2019 15:28:15 -0800 (PST) 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-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=ziJEcxmH0HELRYpJ/Cx0XBIGaICt7y2RQVCxbSTmAUA=; b=Qo6D65L0heKrgIIR6QcXBs2aVxSkj0lfj0HmukNXvh2C4XNmZk0sB9nRR2FU9cPsJ8 0oHl0kzPYIGv+DOCZvO4mYoQLQt2lUmhIhZfTnvZnWSPErjtjS4h8oaI+RF/M7aGdC1G NeytCU8BD553i8spvyhSJOACN9s1OFcnfwqqghcyT3jf/N3Mf/1S3EAmc9eWOrtHZlHN I3XT1Vxw5HOxS4lXlmD5Y/o5sOzEJCNzLfIs/QmR4N7Om65nwoUUtN3IEmpaNp5HPYbO li1345t9RnAO0kBJwtCuobxIolLh9xjfi5YvSaXU/16bLHK//EvWj0tpdTEYVT2FQxOy NhIg== X-Gm-Message-State: AHQUAuZNear/hkBImOBbs2kz0Cc9iv6r4XHBeyLTOTPZqAhLR+SqHXlA hlHvoBnGX6nC7QLIkTU+JJg= 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 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 Content-Transfer-Encoding: 8bit To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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)); +} -- 2.19.1