From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4186DC43603 for ; Fri, 20 Dec 2019 18:52:11 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id F2C7D206D8 for ; Fri, 20 Dec 2019 18:52:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="pv6j6i14" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F2C7D206D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6C3668E01CB; Fri, 20 Dec 2019 13:52:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5FD938E019D; Fri, 20 Dec 2019 13:52:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B45D8E01CB; Fri, 20 Dec 2019 13:52:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0248.hostedemail.com [216.40.44.248]) by kanga.kvack.org (Postfix) with ESMTP id 223528E019D for ; Fri, 20 Dec 2019 13:52:10 -0500 (EST) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with SMTP id DF21C5DE1 for ; Fri, 20 Dec 2019 18:52:09 +0000 (UTC) X-FDA: 76286414778.04.lift52_87420870ff847 X-HE-Tag: lift52_87420870ff847 X-Filterd-Recvd-Size: 5292 Received: from mail-ua1-f73.google.com (mail-ua1-f73.google.com [209.85.222.73]) by imf17.hostedemail.com (Postfix) with ESMTP for ; Fri, 20 Dec 2019 18:52:09 +0000 (UTC) Received: by mail-ua1-f73.google.com with SMTP id i21so1923224uac.10 for ; Fri, 20 Dec 2019 10:52:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=ci6ML5owR9t2LTww/ilBVT3Mv2IbMMWJnHBGgu9VRds=; b=pv6j6i14rpUDUW5/bttmsspMnW2z55plNic/vCQs3S7VG/NvJZykG12k2MJwrUZp1X FmCMnkuHxuR9G1eguaur1ESQkc9arD0+J5QwvX1CwGtkXFO+KSX1+1lnSE788bzjub0z 49E+MBVHRzeH9v9woLruxyJSrJvoI/sViN0uMhABz2ipZ9PbSQf8reJQ4wPQ6ctAuJ7v bBRHR7KcoGZ2L9KKTeFsd29AXnbUK1kSNGt3QeCllIGr1SDIArpR0rX/izaW775Vvx8h 9rgLezB+yOQNVPkCJq6vTLt7hQAata4/SrXdZkbonG2WMXLy7rWLizlJgZFO5Y9iEG6g XUSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=ci6ML5owR9t2LTww/ilBVT3Mv2IbMMWJnHBGgu9VRds=; b=Ljn4PbVH7LhY6ltpDX3qdFTsmF+ioPvndvdjjUBTxjuJbWlF4aqFYKKWa396OhvsEj ximzDHXnyWKKcehqWOFoYLT6nurUPMsW/LPSZXk9UPLgLtkWb91CBXSzzPRiRKw3KHhY /Rx5LfDKfaieuSCZCBQe/yAO8bnDBiDJP+SWiqypSg9Lu/HGvg6uCwVBclV7+8WXoi88 QaQrPKCxaVGJsT4xLTq0Srn5/G5wV5yCIZ61GBnVCwB9iVNG4KxPg3ScDK6/N2/heip3 EJPcs585nC9Sk4V76NoXF83B+q1/ny0QN+pjmHyIOGw3hXe0rAEnDAF/HzQlBnos9oLA f3Og== X-Gm-Message-State: APjAAAVXB52Oged3jOzbyAEgZb/OyirHxBTPWZzZA1P083EKxiKiRlYV i/2Tj5VK4GheYy/cF7edv1n91grMD+w= X-Google-Smtp-Source: APXvYqyPmW/tRHK0mdojwLYj2vt4YE5BnCS13/fHMK8x4vTlAO/aoZOlTDA9rXe+3sdpGoDnldo4cioutQ4= X-Received: by 2002:a05:6102:535:: with SMTP id m21mr7031800vsa.95.1576867928797; Fri, 20 Dec 2019 10:52:08 -0800 (PST) Date: Fri, 20 Dec 2019 19:49:53 +0100 In-Reply-To: <20191220184955.223741-1-glider@google.com> Message-Id: <20191220184955.223741-41-glider@google.com> Mime-Version: 1.0 References: <20191220184955.223741-1-glider@google.com> X-Mailer: git-send-email 2.24.1.735.g03f4e72817-goog Subject: [PATCH RFC v4 40/42] kmsan: ext4: skip block merging logic in ext4_mpage_readpages for KMSAN From: glider@google.com To: "Theodore Ts'o" , Andreas Dilger , Vegard Nossum , Dmitry Vyukov , Marco Elver , Andrey Konovalov , linux-mm@kvack.org Cc: glider@google.com, viro@zeniv.linux.org.uk, akpm@linux-foundation.org, aryabinin@virtuozzo.com, luto@kernel.org, ard.biesheuvel@linaro.org, arnd@arndb.de, hch@infradead.org, hch@lst.de, darrick.wong@oracle.com, davem@davemloft.net, dmitry.torokhov@gmail.com, ebiggers@google.com, edumazet@google.com, ericvh@gmail.com, gregkh@linuxfoundation.org, harry.wentland@amd.com, herbert@gondor.apana.org.au, iii@linux.ibm.com, mingo@elte.hu, jasowang@redhat.com, axboe@kernel.dk, m.szyprowski@samsung.com, mark.rutland@arm.com, martin.petersen@oracle.com, schwidefsky@de.ibm.com, willy@infradead.org, mst@redhat.com, mhocko@suse.com, monstr@monstr.eu, pmladek@suse.com, cai@lca.pw, rdunlap@infradead.org, robin.murphy@arm.com, sergey.senozhatsky@gmail.com, rostedt@goodmis.org, tiwai@suse.com, tglx@linutronix.de, gor@linux.ibm.com, wsa@the-dreams.de Content-Type: text/plain; charset="UTF-8" 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: KMSAN doesn't allow treating adjacent memory pages as such, if they were allocated by different alloc_pages() calls. ext4_mpage_readpages() however does so: adjacent pages end up being passed together to dma_direct_map_sg(). To prevent this, jump directly to the buffer_head-based read function in KMSAN builds. Signed-off-by: Alexander Potapenko Cc: "Theodore Ts'o" Cc: Andreas Dilger Cc: Vegard Nossum Cc: Dmitry Vyukov Cc: Marco Elver Cc: Andrey Konovalov Cc: linux-mm@kvack.org --- v4: - use IS_ENABLED, as requested by Marco Elver Change-Id: I54ae8af536626a988e6398ff18a06c179b0ce034 --- fs/ext4/readpage.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c index fef7755300c3..1e46ddf7a854 100644 --- a/fs/ext4/readpage.c +++ b/fs/ext4/readpage.c @@ -252,6 +252,16 @@ int ext4_mpage_readpages(struct address_space *mapping, if (page_has_buffers(page)) goto confused; + /* + * The following code may treat adjacent pages allocated + * separately as a bigger contiguous allocation. + * KMSAN doesn't allow this, as the corresponding metadata + * pages may be separated. + * Skip this complex logic for KMSAN builds. + */ + if (IS_ENABLED(CONFIG_KMSAN)) + goto confused; + block_in_file = (sector_t)page->index << (PAGE_SHIFT - blkbits); last_block = block_in_file + nr_pages * blocks_per_page; last_block_in_file = (ext4_readpage_limit(inode) + -- 2.24.1.735.g03f4e72817-goog