Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp850533pxb; Thu, 25 Feb 2021 17:29:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJxeRD07TLyd8n5BzDsIkwHRbarUGCrOVDcBvoPWdBViDp4/1K7ZGOUxx6dhouR1BlK17ylT X-Received: by 2002:a17:906:4b02:: with SMTP id y2mr507161eju.475.1614302973244; Thu, 25 Feb 2021 17:29:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614302973; cv=none; d=google.com; s=arc-20160816; b=xg/P1Yhr6sjmYHhwLPPQzPgb0/4BFxItASq01yaCkMQESvfJ6wD6AL688CLoNPmn79 K0tFWO52Mqzo9RKjn9dVBvvCp5axaC9gZKAk3BJmMBdjbUqZBH5+N+TM1ZmsFYwLzwAT JtzZKdJNTTeXSHBrDrGKcU8T1SunSUGflckmEx0vrsIHp6GmQOLKvONrJL972REgzv59 sC7462NQIwOkKfKmNvnNfy0pIBFlDHI3oZGlcZwqlnGAty5F/HvRoA59z9UAkWLDC6nx LotMn0YBYbymQ6BTrHSyoS4V/YzzyRPycLNr5E9jXzj7BN0eaIH4DE03OAK/QpAMASZo lLxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :sender:dkim-signature; bh=fGyKOr2NOKevbTthD2lHJMlPg4rW22LG13Q09TJ/Cwo=; b=Lp4LRM78hrYTjbs95DaYiCNsZkPg7VNLXdk/e5GnCRVapXj+BaDwgmxbWsYv8geuSd Cm2T8SuYpU5DcK2uS3OanZSOLubpdBtdhXKcE8Rj3ag++9rVeBwlvMVLzU8GNjh9XDX5 Idw1bjJjIHbh8wF1MjI7WSrJAREAUF89HbmOK8vekmiHD7IKO4Is+Ma2ZpzFTFClYPie Cy/uoB2XXJSm5JcW4jepQe7xdyanGkEamcbdVzKXarpA8mNV8xJx9wHXsFSGxbMAjSxh 7VRyQ8NPzpmsDuiYcaDfYoHyEccIoHjtcnWmqXvLHOc/oNUlsAKEQf5U4NiNZ1bzbDwo yuCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=uJ3kYZFM; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w5si5021978edv.513.2021.02.25.17.29.10; Thu, 25 Feb 2021 17:29:33 -0800 (PST) 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=@google.com header.s=20161025 header.b=uJ3kYZFM; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229845AbhBZB0b (ORCPT + 99 others); Thu, 25 Feb 2021 20:26:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229498AbhBZB03 (ORCPT ); Thu, 25 Feb 2021 20:26:29 -0500 Received: from mail-qt1-x84a.google.com (mail-qt1-x84a.google.com [IPv6:2607:f8b0:4864:20::84a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 170ACC061574 for ; Thu, 25 Feb 2021 17:25:49 -0800 (PST) Received: by mail-qt1-x84a.google.com with SMTP id b7so5465643qtj.16 for ; Thu, 25 Feb 2021 17:25:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:message-id:mime-version:subject:from:to:cc; bh=fGyKOr2NOKevbTthD2lHJMlPg4rW22LG13Q09TJ/Cwo=; b=uJ3kYZFMxLlqqaX2Rpd/bNsgXGp/tuRktWkUVuBsiZevS3FWcgeedNlg1NIP9RR05Q OiW5+84gPyysjLwJ8tA1/8rRWRei2XESjivD4O/4daEgXJgiPjvKT0VL1nqeB84Hh7yX BuK3Q8feeTPXniLZYAVwdHCAOIL8JVWc6NDK1SyFQXQrCXxf43qF+Xe4QRoOL7wA7Q88 wELUKvoBH4Sf9kgavRQ6xhikOYJpXlqip6C7sZqhsFreA5lTLNBUP56ebjqNH3XccEGg emX6/RAwlaw2MJ+mmOvc8i8Cz7fAnP4iZeIWP2aj+YEj+aWYEjoh9hR1FziZwUDwoIPw a6/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:message-id:mime-version:subject:from :to:cc; bh=fGyKOr2NOKevbTthD2lHJMlPg4rW22LG13Q09TJ/Cwo=; b=T63e14ZswBNXcdxd0IONFAnHCIv/IJvCISWNNiIJFFDjqImWaznO8YEgYB1XojpWdw MGo2wblzWdx/aMbD6yosjjxfFMlaFd77H4buDnankkesfGJQWZb0i5iZIeDgnSI8Jcm0 Bj1k6FyRHzoe6CNE4tt46P584uRHV/G+Kv0FVgQ4RY+/YzFLqc9PmDh5hmCHj9fv77a2 mnq5cS494EA1zoT5+oyduWk/K0XCjkt6lA3+H5EEVQDM86kwl1Bbahcjo7M2+U9ifoXG 6+er2SriuYLVpXL3kQ0Mggzy7gSD0rBCTHalrReb1aJlErFqBnL0CfrDfgibzKauI5Iq mjhw== X-Gm-Message-State: AOAM532R/T6ovXzBn+i+rHhZHlzHhsj63mc+e/WB9kHuJleiWz/DIpPl q36g+mHtO37BYC2dUdVsGTlUDnrK/DP2ClD+ Sender: "andreyknvl via sendgmr" X-Received: from andreyknvl3.muc.corp.google.com ([2a00:79e0:15:13:5c80:fb1e:3d1d:d709]) (user=andreyknvl job=sendgmr) by 2002:a0c:ec4e:: with SMTP id n14mr518858qvq.34.1614302748187; Thu, 25 Feb 2021 17:25:48 -0800 (PST) Date: Fri, 26 Feb 2021 02:25:37 +0100 Message-Id: <1aa83e48627978de8068d5e3314185f3a0d7a849.1614302398.git.andreyknvl@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.30.1.766.gb4fecdf3b7-goog Subject: [PATCH] kasan, mm: fix crash with HW_TAGS and DEBUG_PAGEALLOC From: Andrey Konovalov To: Andrew Morton Cc: Catalin Marinas , Will Deacon , Vincenzo Frascino , Dmitry Vyukov , Andrey Ryabinin , Alexander Potapenko , Marco Elver , Peter Collingbourne , Evgenii Stepanov , Branislav Rankov , Kevin Brodsky , Christoph Hellwig , kasan-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, kasan_free_nondeferred_pages()->kasan_free_pages() is called after debug_pagealloc_unmap_pages(). This causes a crash when debug_pagealloc is enabled, as HW_TAGS KASAN can't set tags on an unmapped page. This patch puts kasan_free_nondeferred_pages() before debug_pagealloc_unmap_pages(). Besides fixing the crash, this also makes the annotation order consistent with debug_pagealloc_map_pages() preceding kasan_alloc_pages(). Signed-off-by: Andrey Konovalov --- mm/page_alloc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c89e7b107514..54bc237fd319 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1311,10 +1311,14 @@ static __always_inline bool free_pages_prepare(struct page *page, */ arch_free_page(page, order); - debug_pagealloc_unmap_pages(page, 1 << order); - + /* + * With hardware tag-based KASAN, memory tags must be set + * before unmapping the page with debug_pagealloc. + */ kasan_free_nondeferred_pages(page, order, fpi_flags); + debug_pagealloc_unmap_pages(page, 1 << order); + return true; } -- 2.30.1.766.gb4fecdf3b7-goog