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 8B26AC35274 for ; Mon, 18 Dec 2023 03:34:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 23E5F6B0075; Sun, 17 Dec 2023 22:34:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1EE7F6B0078; Sun, 17 Dec 2023 22:34:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B6536B007B; Sun, 17 Dec 2023 22:34:43 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id EF80F6B0075 for ; Sun, 17 Dec 2023 22:34:42 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C93EA140821 for ; Mon, 18 Dec 2023 03:34:42 +0000 (UTC) X-FDA: 81578522004.07.685C77F Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by imf24.hostedemail.com (Postfix) with ESMTP id 8C1F218000D for ; Mon, 18 Dec 2023 03:34:40 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf24.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702870481; a=rsa-sha256; cv=none; b=445vx/77G2qmfIuOSrXGN21Ow7iF8gEb2mX1M5E0QIpy9NFHWvvtlo9CQL8JLEp/NlE4bd kleaqPlTpQz7Hba1IXiTcR4571ePps6e4HnY0pasVzC+NUAibFlTBxXZiX8bZAemZPOSIT 5uaJ9FcP4ewzjXbq1uFsisE2gzStpug= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf24.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702870481; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UIC2fpUrsQ8OkjbYEyNr2G6+no4enW/TOckRha0+ZH4=; b=F2x9E6kYcv+kaF1sXKlm8yTlge/35v2YVg0I++zBpssZfSJJdpp9bqPAYEtMMoZCofeEaq SzRq7ZAVY/L/pCpLoyJf1liwC+5x0L5wIfen4HnV4gviiQFz/Jzk6o+cKGxsB9rw57ZVCE 4Spi9hFexFBwDEbVNq4xzp5yHoKVx6c= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R171e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045192;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=8;SR=0;TI=SMTPD_---0Vye9d5e_1702870475; Received: from 30.97.48.59(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0Vye9d5e_1702870475) by smtp.aliyun-inc.com; Mon, 18 Dec 2023 11:34:36 +0800 Message-ID: <874cce7f-4545-450f-9d6b-4f3e3357281b@linux.alibaba.com> Date: Mon, 18 Dec 2023 11:34:59 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm: migrate: fix getting incorrect page mapping during page migration To: Matthew Wilcox Cc: akpm@linux-foundation.org, david@redhat.com, ying.huang@intel.com, ziy@nvidia.com, xuyu@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: From: Baolin Wang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 8C1F218000D X-Stat-Signature: ce9bkxaf98n3nr4qrhoee4uka8f8gafp X-Rspam-User: X-HE-Tag: 1702870480-357873 X-HE-Meta: U2FsdGVkX1/vXA9ztavTi/zwSOJyzxys3xq8zYKD0lRmrTuiC1SxnS0vNQKoQfm6GB2JEJ5WNeNYLWEQ0j2mra9nLIfjtb3/Tcxu/+fCxitza5MiR2QmFRq63KKMjbPQG1wLFV8Mx6V3f+7PL72QYTPY1on8r6jcV3SuP9uKXV4Aty40QzWbY+vq0DZCtk3v6HP22SzmFbcB6N2x0cWYlFjjbjJ2htX9ZBmQGcnWqBBaVyZBeus1TCz+J73thf2QmkaTJqDevfxnLqYjY5b9cBmZePR+lA91LUzP7kTGnc6XJSPJy4pJS2QABm9hNG6TgGw5rD83hXdjz4nU5/CBvZReM1QuNNlhqix3J/54RcOyhggehEUylLqs5afG1tn4184WW7JtDc89EGxA+NEZ4X1yUY2+OpZQllT6MW8pXeUS4KYD6rfY4S6WsQMUOh9RWsTOBDOrR+6Iw3fYDoCogRsfA1wZEINkWee0t5wqM6JL14ydhQis7Gw6xJrGBg2ZxDWdbsCihWFHVTEaatKiuJ0IAIL/YkiHhjpT3YFq6aUNrWBcJrFITZXwbnQNhwxgYP8YmUJKuXj14UNXGDobYBdN+od9J7byoDA/4TQPcBATb0JzZCu16lW115ZZIFXQy6kxrIyAG6tQbtwkT27shU/dIqfDict02OV6wX4o83RLBAA1H9o+X3dxbXHA0cEG/JTyK6wYNdWdxJ6Az7BztVlLMrHdrHWDX39mOAxsCFMq7gZRXTOjsh8L4WkaGZOWobqzzGcCCAlLN4d5cNzQuMLqMmk+lpqXKKrEX1CH7N+ZeZlSOdD+yGs/Bt14Ha6pWeRR4jkUui9Oc3bQnyYwdHXAvT4gvqqth0fO8DRlxwQrVJPIn37TRSoRRwyBtBqZ5wVK5NzbC0F0YbMfqVTosPe6zz9vTBiwCv3itoCcsrtes/jhUarjyKOQa33zrXEU0+5ibRwe8ZSjPSA5XX6 f0NCr4YH LDUBpmeutR8Qm7SkcuWuKHZ1ZumzIcujXPyCtUAx1AjM29S/EOuBti/7bKFnvpSK4OjND8lMlFBbh6LuSkbjEfaJN0IQFWTEh7wErOERGxosMdKsrB6rw69zBR1rqaR+3zy3yMT3GWmqpFvmIXmpuOdicxMjeLXGFpNQkTCSKY5+Kj4Y= 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: List-Subscribe: List-Unsubscribe: On 12/15/2023 11:01 PM, Matthew Wilcox wrote: > On Fri, Dec 15, 2023 at 02:51:43PM +0000, Matthew Wilcox wrote: >> I'm not saying no to this fix, but dump_mapping() is supposed to be >> resilient against this. Is the issue that 'dentry' is NULL, or is it >> some field within dentry that is NULL? eg, would this fix your >> case? > > Uh, dentry is an on-stack dentry. So obviously it's a pointer within it > that's NULL. Maybe this, having stared at the implementation of %pd? Yes, I think below check can avoid crash of dentry_name() used by '%pd'. Maybe we should also initialize on-stack dentry by struct dentry dentry = { }; I can send a patch with your suggestion. Thanks. > +++ b/fs/inode.c > @@ -588,7 +588,8 @@ void dump_mapping(const struct address_space *mapping) > } > > dentry_ptr = container_of(dentry_first, struct dentry, d_u.d_alias); > - if (get_kernel_nofault(dentry, dentry_ptr)) { > + if (get_kernel_nofault(dentry, dentry_ptr) || > + !dentry->d_parent || !dentry->d_name) { > pr_warn("aops:%ps ino:%lx invalid dentry:%px\n", > a_ops, ino, dentry_ptr); > return;