Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1075490ybl; Wed, 14 Aug 2019 10:17:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqwkmUYs7ofy8dgmIpXfJbx8DwDDSbn8B2dsC6y7moX/bVQ9jUqyqdOYsGnojxMkBL20WZ6a X-Received: by 2002:aa7:9abc:: with SMTP id x28mr1051638pfi.234.1565803069388; Wed, 14 Aug 2019 10:17:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565803069; cv=none; d=google.com; s=arc-20160816; b=bpUUO5QxF4H4ndGx6UQoCHF5gEX0B37vM/GCT9MKThooP8GFzTpSvCcsO5GnZjbcCm fKYXu27ihJuCuYAgfgdnk8FFHQavQFmEfCMFa+gBXfmsTNe5CKJLQKilK7FQVswmCiAH 3HWnUFzwG6uUSF4P4rXRIgZOemz6VL8RodLNWhslU4D9i2c4a/nMaNe1/CiD8jlJqqR7 tgvcnUCaU6hjgVKomknvqWjK8rfn7GNUuQWYIXW8A7GFhron7/CGqaszMfiPFPSo6VYn RxxuRDFAi75KBTeiY1xveOeCelEX/oKyboZqcGTwMFeHJEwlwQS/3P0KXM3PSH2RGQYk LxUA== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Iykr+7PQBeL8Uv4hYxXxz0cLvFbsOFH4wEc72dg9tIU=; b=FTDP3ismIAFVvBA6iu2wQpqxQHM0qgtaxTujCo6xW2vBWHoLyN27fCbFKMSKaakwVP PvSPYmTH46DKRhwgNwsBi7gt4HUpS5CMmk7y+y70oOyHUeqlI0+rQMQ5IG6JOuikp5IP LEDnIxV2mNfCKA2XLBPOc6wd2+yLiAQSeOULfkkG9ABrXMdK3qc89H7KN6J1MHkSRpOP PEG6nAVm45LbZFcRr2luCAdmfp4oL4YSdpPxLva9zJKdTql7tbobVUOzwH1YQCQFsWez vdPF4XF+yvPbT/tziaMWxr5RndCwAh9tpkTVUO4jZOl/LY+hxjBn+mpNBefOrHCm26Q9 SFkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=kdSmfCtf; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 143si186972pgc.479.2019.08.14.10.17.33; Wed, 14 Aug 2019 10:17:49 -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=kdSmfCtf; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728984AbfHNRN5 (ORCPT + 99 others); Wed, 14 Aug 2019 13:13:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:38296 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730968AbfHNRNy (ORCPT ); Wed, 14 Aug 2019 13:13:54 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BB7CD20665; Wed, 14 Aug 2019 17:13:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565802833; bh=qDZva4gHxim8jnTlgaNdRKpb8F1TlaMNJ/vRHk0cXAU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kdSmfCtfexmrHkilbF9AQ2u6CndZ2VcYorRL2X9nczHLZcq7jKsy51ODDfEcjrJkA llySAa27hcCxjSIuyPB32yXuIo48L8IzdxXS4SjTOBw/WARhHwwetP9LITmDUTywFc aOEKqGwLwMiLJpeb/OjRCf1pp8xbkKi1Fzuv8q8U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Joerg Roedel , Thomas Gleixner , Dave Hansen Subject: [PATCH 4.14 17/69] mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy() Date: Wed, 14 Aug 2019 19:01:15 +0200 Message-Id: <20190814165746.789352202@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190814165744.822314328@linuxfoundation.org> References: <20190814165744.822314328@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel commit 3f8fd02b1bf1d7ba964485a56f2f4b53ae88c167 upstream. On x86-32 with PTI enabled, parts of the kernel page-tables are not shared between processes. This can cause mappings in the vmalloc/ioremap area to persist in some page-tables after the region is unmapped and released. When the region is re-used the processes with the old mappings do not fault in the new mappings but still access the old ones. This causes undefined behavior, in reality often data corruption, kernel oopses and panics and even spontaneous reboots. Fix this problem by activly syncing unmaps in the vmalloc/ioremap area to all page-tables in the system before the regions can be re-used. Fixes: 5d72b4fba40ef ('x86, mm: support huge I/O mapping capability I/F') Signed-off-by: Joerg Roedel Signed-off-by: Thomas Gleixner Reviewed-by: Dave Hansen Link: https://lkml.kernel.org/r/20190719184652.11391-4-joro@8bytes.org Signed-off-by: Greg Kroah-Hartman --- mm/vmalloc.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1766,6 +1766,12 @@ void *__vmalloc_node_range(unsigned long return NULL; /* + * First make sure the mappings are removed from all page-tables + * before they are freed. + */ + vmalloc_sync_all(); + + /* * In this function, newly allocated vm_struct has VM_UNINITIALIZED * flag. It means that vm_struct is not fully initialized. * Now, it is fully initialized, so remove this flag here. @@ -2314,6 +2320,9 @@ EXPORT_SYMBOL(remap_vmalloc_range); /* * Implement a stub for vmalloc_sync_all() if the architecture chose not to * have one. + * + * The purpose of this function is to make sure the vmalloc area + * mappings are identical in all page-tables in the system. */ void __weak vmalloc_sync_all(void) {