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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CED27C54EBD for ; Fri, 13 Jan 2023 19:04:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C8708E0002; Fri, 13 Jan 2023 14:04:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 678648E0001; Fri, 13 Jan 2023 14:04:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 540D78E0002; Fri, 13 Jan 2023 14:04:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 450358E0001 for ; Fri, 13 Jan 2023 14:04:20 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 10E9B40DB9 for ; Fri, 13 Jan 2023 19:04:20 +0000 (UTC) X-FDA: 80350701480.02.5C330BB Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by imf24.hostedemail.com (Postfix) with ESMTP id 42187180018 for ; Fri, 13 Jan 2023 19:04:18 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=j9qoVvx9; spf=pass (imf24.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.47 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673636658; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9aefGi5CKGy06ur/H5iSM581vFB667NHkUkls7C28CE=; b=Y+91vJ92sQYe06leZFmbapgRO1fMjccIoj8Iivodd7P+uHqqav3qDM0BAun5/VCLX7bYwi j1aXrAGMoLw4FIDgjz9i9jPLGp1leTRiDBj7SxOcrewYOkDyaX8l0JJbkkIDbgC1zGrqWz Anp8dDRj1C/XnCLg3caGXjk+xp3eM2c= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=j9qoVvx9; spf=pass (imf24.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.47 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673636658; a=rsa-sha256; cv=none; b=vWR4/IqGuv3QR5L221wG+DBP6Wk9h362SG2mEfSUyXIBI/l8HI4dbNNkTxPWz80g4tu0yl IIYKlTCzPBC3fUT5R6n22qcvucUAEXPsdtZ6xnDQGK3Y9XpGPNhO995vvsxYpDELkKUlCr z1gNSPIK/p32oPKl7Wv/wH+KenrYw5E= Received: by mail-wm1-f47.google.com with SMTP id bg13-20020a05600c3c8d00b003d9712b29d2so19431635wmb.2 for ; Fri, 13 Jan 2023 11:04:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=9aefGi5CKGy06ur/H5iSM581vFB667NHkUkls7C28CE=; b=j9qoVvx95Q0G36LS1hv+G2OpMCR2LhxmdwjfhJHjsyCRxa8bYtxVohJ+LJDFCXplLV +SwCoWGqeA6f3HQEgFLU2wPUYUOK8zVztitg1auEWbBxvkdTP3PtkjtmEHbG8kV4C5lv tnGkHAdPyAB06LDrz5QvrEasIKThaSjI4T9V31OiPuIqGuu4OrzajPrZX05Oz/ECRkGe Dobw7YQhAQKY5sV3SMEEdops7utCVobD3fyfciqhbRH2FlmT/IiYb0B45dJSSjf1zCnB zPjJ2Nqy1HVCUF8BM5cKjj3T009B9gNwI6ljkcCe1OgiV2gXdNkXxQWcDojwVCtk8Dv7 JqDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9aefGi5CKGy06ur/H5iSM581vFB667NHkUkls7C28CE=; b=UFFtLGAT+CCuTvc16BiuaW5KnXcsKj92m0oiUhza1mxEr8YKLRur3QH2TBRuBI0l0m bRWMUdezTPy6Cs112f4/0/2L/EV1QPAlGmK7tJ9YMjXIHyQGjB80+jdTlIdBr5J73QBJ Y3rHqQ8ieZZvmSex1uqIIZcveJu5iwCzdlfZLzdITlcE/7sumGc9DwteQ5bc74AUoSJV 4qXspaOGY8vuyOEkrGOE5WSr6hObrEdWUGllJVyLLShLv/STHMKHUsJP5dN7BJFlzlX7 uKPOfym5mp7dPdPlb7MdBh5mU3DjSPIKhSlfqx8mf9q86UpbQskvO8wAhaVXJfXlkUC0 pkcw== X-Gm-Message-State: AFqh2kpe5ll2jq6poD4xWa4iV1j9s8Y1riuBGZ57oTMq49SnoF+rKqNL 2MjDF3e48tyqQFb4n64Ppys= X-Google-Smtp-Source: AMrXdXu3FnusR99msMIPAcEj3fbLlYpfns2KUFm0YaRH5hnGqbEIy/d9e0hvLJumhmDiWfWg+9PUrw== X-Received: by 2002:a1c:7417:0:b0:3da:fcd:7dfe with SMTP id p23-20020a1c7417000000b003da0fcd7dfemr656015wmc.10.1673636656691; Fri, 13 Jan 2023 11:04:16 -0800 (PST) Received: from localhost (host86-164-169-89.range86-164.btcentralplus.com. [86.164.169.89]) by smtp.gmail.com with ESMTPSA id i8-20020a05600c354800b003cf894dbc4fsm28095048wmq.25.2023.01.13.11.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jan 2023 11:04:15 -0800 (PST) Date: Fri, 13 Jan 2023 19:04:14 +0000 From: Lorenzo Stoakes To: David Hildenbrand Cc: Marek Szyprowski , Kefeng Wang , akpm@linux-foundation.org, willy@infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH -next 5/7] mm: memory: convert wp_page_copy() to use folios Message-ID: References: <20230112083006.163393-1-wangkefeng.wang@huawei.com> <20230112083006.163393-6-wangkefeng.wang@huawei.com> <32fefce6-e25d-106d-12ec-8fc612843cfb@samsung.com> <8bbc5629-b89a-83f3-41a4-0083ea2468c1@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8bbc5629-b89a-83f3-41a4-0083ea2468c1@redhat.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 42187180018 X-Rspam-User: X-Stat-Signature: kjb4ai5fw4kr7y8xgac94ogrri61thxh X-HE-Tag: 1673636657-682015 X-HE-Meta: U2FsdGVkX187AzJ64RBZuKs2RsMalYduy4eMH6nL/CTtjlwrFUZt2b1kMzfVvuo9V3DeYbe8s3m2cGqcXm//4HLLzAelFwX85x5qyNjlpn8AFmOv7mneodcdMljbdYfxaunNPdeXQIgaUUQl107NqdoUolyJNa/GEzio2CNMJAWusBuo74uD3CUxcKf+nfmoJ1IOk7c9LETLaA8swMQYDj4QZSssNfXTB6bu/cqVKyoFeDjF5pFkRrXy08HfCWklrTir3/nQNbdlrL3//g6Y1H0ggf0C2VNXg/wzKm5Qx9te4zFScTmVg70+BfKPi7mtG6BiuAb8kiAFMYjISKWfWklxWCJR04RA/G7PMgJPt+rxfftSrDnr09cVUg/JRGqyEq3LeUuzIPIYyLbEvHPIrVU8J2f8hIpUQozAZC3x9m0FN30wzKfwGRA27VQverAgrrtwcHQDAYZq8FLKZIpoW1qoRqarQ3JPx74048GfqNhWczTMzR11W3xK2d30aCkN5VZ36betQPc0NB6VJoFgnadWow3nk5bLZHrUboykDoCgwujEdXiJ/nCnyMcrrhjRD+oaysrETK7mNVDWs+XDaZGbuZVpRrbfTOpbT7o733Dv1cn88aIuROb4cRN3+Qynl31p82mVovZAe0duiajpoh/LgnCqVJ7FTjPLw2T9PDe33CexlihB4E38q4/s0xVaKo5QzVSs+Rk61AdYRCL6p7OuN1qSPQ4N7if+IUwD/QOH6H/eJEOFu/lso8DY4kxBTzJa/FaRfj6ysycbLpaF98UoJlV3Ggs2ROqqDnIBJqhySFTWNKRdyyMqEBuPKpgfR6c9O8yPREr/U7PD6f/gELwm/2axKCJLiUQZDODHB3Bd4qdRpfVLqcurmPxL2gsTOZ0QuVm8vi4m5AmdZlxH2fN0RtiZpdbTE+3L7q+AhdVzxvgY2tYaG59hv61+7C/Grs9ltCiM0LXNkWY93Aa 45HgFrdb mIAbkkQe6opmIb39biSxV+PQk422AWw+HoZo3bXBFVyrmh/Whz7UKv45Db7fdT9Sf3C//R3M8iPbbPBqTMyDlskPmdmz8cB5vUCfUdXJCSlT8FOwUTXXmEToAqlpXBIhU+5eXDHOmkJh5JAI= 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: On Fri, Jan 13, 2023 at 02:08:36PM +0100, David Hildenbrand wrote: > On 13.01.23 14:01, Marek Szyprowski wrote: > > Hi > > > > On 12.01.2023 09:30, Kefeng Wang wrote: > > > The old_page/new_page are converted to old_folio/new_folio in > > > wp_page_copy(), then replaced related page functions to folio > > > functions. > > > > > > Signed-off-by: Kefeng Wang > > > > This patch, merged into today's linux-next as commit 9ebae00c8e30 ("mm: > > memory: convert wp_page_copy() to use folios"), causes serious stability > > issues on my ARM based test boards. Here is the example of such crash: > > syzbot is also not happy: > > https://lkml.kernel.org/r/000000000000807c7805f2205df1@google.com > > -- > Thanks, > > David / dhildenb > This also completely broke my qemu environment. In that thread Willy points out that the issue stems from blindly assigning page_folio(old_page) to old_folio without checking whether it is NULL first, therefore triggering a NULL pointer deref. A quick fix would be to put in a check (as shown below) which fixes the issue, but as Willy said, I think we should drop this until it can be fixed in a respin. --- a/mm/memory.c +++ b/mm/memory.c @@ -3044,7 +3044,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) struct vm_area_struct *vma = vmf->vma; struct mm_struct *mm = vma->vm_mm; struct page *old_page = vmf->page; - struct folio *old_folio = page_folio(old_page); + struct folio *old_folio = old_page ? page_folio(old_page) : NULL;