Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4370365pxj; Tue, 8 Jun 2021 12:38:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXguzNu8BEABjvJNKTfHX8/DDpFNKgtzWBDNOqsUcNi1PqR86OW/5eB67Sy7lW0n2x58tw X-Received: by 2002:a05:6402:2049:: with SMTP id bc9mr27328049edb.298.1623181082578; Tue, 08 Jun 2021 12:38:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623181082; cv=none; d=google.com; s=arc-20160816; b=TxqNnZ2phfYMs7Cl8z2yCEKmo4BA3vjXLQ456xoMrDdJNy6+HIkCBe4PxFFzVIAcjW qY3BqFToYosYzxS2DY8DB1+tFYBsHmrPuei6FM14aNvGV1sftKT6m5GG8Qk3YZeSOpLs qctmi73e85ipL8uOmJmdWqOqXbAyGslyC+wbl9wjxp56cYMG7U/eT5UH06ggkh9uWOY7 IHJ5Qcj/pAYGr+oNo1wYGyka3jyoqDV7U5UtapoUaZNWDoIYzSA2yF2T41jAn9ztvZ8e ytOFtsICDSohu+72OJV1UxDz3cBmA6tC44NCEdpsMh/oM1yHXsnzNtsXKy21rvr44xdw rfrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=vOJhCS57r5TMUoIDqRe+25leIj9upnRG/0I3OYhiYq8=; b=XUuJELmqhEd46uyGHdQgvxyo1XdCQUtHTnc7OZVCOxI+YuDEI0O6P8xFoRKw0CegYX XTA2fPuHgThoWz9bgp0ut6ul/EdJC8quUUdf1v2+O8XAdHBId28oJ8Kud9r2maLv2ap+ vwJA10twwmIPkjLOki2CZwrTRr1ziX02vxbzFDm2kmma+jZnE7ZU3yiqUBlFTnQTZQ5t jBzLXMcsleQzkbLW0+rceE1oVRMsMxEgn+rm/a24+VF0A6arM+kbTO/+vGurZvUGU8+T fAF0vEePC48z0h9eotaf8JEY4EgQQt6s6iogvGOx66MmVNj2WftYsV61OAJqbEEn+opF LZNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qkccb+kw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v1si543160ejd.643.2021.06.08.12.37.39; Tue, 08 Jun 2021 12:38:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qkccb+kw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239337AbhFHTfT (ORCPT + 99 others); Tue, 8 Jun 2021 15:35:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:41278 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237540AbhFHTSr (ORCPT ); Tue, 8 Jun 2021 15:18:47 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 63EAA61968; Tue, 8 Jun 2021 18:52:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623178325; bh=vf4g9+7pLkPtd5fZZBgWPVzXF/IPo59BxxDUlb+KKNM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qkccb+kwCPYGSyv30VqEi1crbJihAQTqs3R5R8n/5IDG/R5mCfQjyE3qjJxD2x+s9 7KSPqVsJvT2XgGLeYN4Ov1j+NptxodwMTBWjLiz2+vpqKezzdZc/hDCjy6EV7g+4OG QOV96IQ0j8MZjeBuNfqBOociWA5mJ4GG1eVAAk6U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Gerald Schaefer , Anshuman Khandual , Vineet Gupta , Palmer Dabbelt , Paul Walmsley , Andrew Morton , Linus Torvalds Subject: [PATCH 5.12 127/161] mm/debug_vm_pgtable: fix alignment for pmd/pud_advanced_tests() Date: Tue, 8 Jun 2021 20:27:37 +0200 Message-Id: <20210608175949.738173938@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210608175945.476074951@linuxfoundation.org> References: <20210608175945.476074951@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gerald Schaefer commit 04f7ce3f07ce39b1a3ca03a56b238a53acc52cfd upstream. In pmd/pud_advanced_tests(), the vaddr is aligned up to the next pmd/pud entry, and so it does not match the given pmdp/pudp and (aligned down) pfn any more. For s390, this results in memory corruption, because the IDTE instruction used e.g. in xxx_get_and_clear() will take the vaddr for some calculations, in combination with the given pmdp. It will then end up with a wrong table origin, ending on ...ff8, and some of those wrongly set low-order bits will also select a wrong pagetable level for the index addition. IDTE could therefore invalidate (or 0x20) something outside of the page tables, depending on the wrongly picked index, which in turn depends on the random vaddr. As result, we sometimes see "BUG task_struct (Not tainted): Padding overwritten" on s390, where one 0x5a padding value got overwritten with 0x7a. Fix this by aligning down, similar to how the pmd/pud_aligned pfns are calculated. Link: https://lkml.kernel.org/r/20210525130043.186290-2-gerald.schaefer@linux.ibm.com Fixes: a5c3b9ffb0f40 ("mm/debug_vm_pgtable: add tests validating advanced arch page table helpers") Signed-off-by: Gerald Schaefer Reviewed-by: Anshuman Khandual Cc: Vineet Gupta Cc: Palmer Dabbelt Cc: Paul Walmsley Cc: [5.9+] Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- mm/debug_vm_pgtable.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -192,7 +192,7 @@ static void __init pmd_advanced_tests(st pr_debug("Validating PMD advanced\n"); /* Align the address wrt HPAGE_PMD_SIZE */ - vaddr = (vaddr & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE; + vaddr &= HPAGE_PMD_MASK; pgtable_trans_huge_deposit(mm, pmdp, pgtable); @@ -330,7 +330,7 @@ static void __init pud_advanced_tests(st pr_debug("Validating PUD advanced\n"); /* Align the address wrt HPAGE_PUD_SIZE */ - vaddr = (vaddr & HPAGE_PUD_MASK) + HPAGE_PUD_SIZE; + vaddr &= HPAGE_PUD_MASK; set_pud_at(mm, vaddr, pudp, pud); pudp_set_wrprotect(mm, vaddr, pudp);