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 3C69CC3DA4A for ; Mon, 19 Aug 2024 19:51:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE2A96B007B; Mon, 19 Aug 2024 15:51:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B91B96B0082; Mon, 19 Aug 2024 15:51:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A80866B0083; Mon, 19 Aug 2024 15:51:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 897466B007B for ; Mon, 19 Aug 2024 15:51:29 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 395EE1614EA for ; Mon, 19 Aug 2024 19:51:29 +0000 (UTC) X-FDA: 82470039498.26.B7CFAB2 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf22.hostedemail.com (Postfix) with ESMTP id EE2E0C0024 for ; Mon, 19 Aug 2024 19:51:26 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XdhVOjeu; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf22.hostedemail.com: domain of nathan@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=nathan@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724097072; a=rsa-sha256; cv=none; b=6kSHQ9bmmMosF+ymsreHOGiR2KXLOAef4/7dA8PA6fRn30l8YrMp9E/RQkwNoMdu8CeZmr IpEDDOGNRUCnD4YRnRy8l6IoxEOl/Su0jwn9rJeLD7YlvWiFKYorKNEnMyYJDrnNChSKgq 43BhtaYBPP4WQfqYanXUl7CJj2wwXc4= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XdhVOjeu; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf22.hostedemail.com: domain of nathan@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=nathan@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724097072; 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=SuHfU5/w3CveC8wCLCAqsgdUNPJo2e75mJ2P8g4wmo4=; b=pTN7VcQ0dPaKKqFfFNtxKuUIXWIU1IPdmdtmmJHpwmWuEYHjaSj+E8V7AFCtPROxL9I7pk 9/1W8MGPL1HKpNhqDh1efRFLF2V8vL/Lti4KrAlnZxkgrA9kXl2axrNmyP5qZLDvU2t3K6 XhA6ZoTnbDRSoxIT2joq/uctp8pZrVU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 44FDBCE0AD5; Mon, 19 Aug 2024 19:51:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE098C32782; Mon, 19 Aug 2024 19:51:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724097082; bh=McJ9UJAr4K3xYwTvvJs50F0sBT4fzSmHo3T/Mzh4kTw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=XdhVOjeuaWsPp1GeaLjwewGgxv58pOwEVGsCcjyDXDJ8LVA717cim1U2OXxi7lKrH 6YRjLWNnxvpo+cSVJTdTgEfqUQZRWGjHE1RU+HCopNCHPxbfHU+Xbbhiw8bnsSUPqX 5XUmS+NaCIOwPjv8CxONOAqCIrB4TxMeNhsF6Da/MBWmtafIC/Z1tWflXBSM89zBcF cb8mQeAfYRubTrea091EZ8Ee1KBsirUCQN0Evtl16LqIvq1QDudx1FzaO8oqpgnc2J 88gAGQVcxouO9ALNbezvS79ZVonjBatsr0qBamzNkGigQpSIt1OtB64LwphFi+kN2M ovy1vttjH7M9A== Date: Mon, 19 Aug 2024 12:51:20 -0700 From: Nathan Chancellor To: Linus Torvalds Cc: Michael Ellerman , linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, akpm@linux-foundation.org, christophe.leroy@csgroup.eu, jeffxu@google.com, Liam.Howlett@oracle.com, linux-kernel@vger.kernel.org, npiggin@gmail.com, oliver.sang@intel.com, pedro.falcato@gmail.com, linux-um@lists.infradead.org Subject: Re: [PATCH v2 1/4] mm: Add optional close() to struct vm_special_mapping Message-ID: <20240819195120.GA1113263@thelio-3990X> References: <20240812082605.743814-1-mpe@ellerman.id.au> <20240819185253.GA2333884@thelio-3990X> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: EE2E0C0024 X-Rspamd-Server: rspam01 X-Stat-Signature: 4ti1uz16yrr1t6f15mx4tsxgghd6dixs X-HE-Tag: 1724097086-13426 X-HE-Meta: U2FsdGVkX18yVtsndtViyhHKdxrxcczDSOLX/Wgd7vNRBfM0DML2UYgLptYn86c2I3j66k2i+XtusJlx4QRVSHqVnrIfOj3JKnNpwOt4TbeBPIT7p3FSXalFyP6v206I1YjahDiIYvFVRIfDB+s2LmFlm1k6JB69Wukniwwt+/lW8Lssm5QmDHqy0lw+wzrwktQ91DnVLLDBmbfMsU+DMWWlgmuIDppYmSJGnHv7p09yMz7W+FhlxEi9rS1HspRqmsYay2RCokgj1thGayZ39f0UrteHfM0QBkSUgj0MPdFcup7Kftq/Th9c2QY2Nqe6yaLYVOO7a/PYKZrS6PVDRgNT++LAwWlBiMmR2YkHWEC8keMV/8s5RzviIiMHsMnACRZ7uhZAS8MSIbwgyU0g5LqswmGO+q4BghpYomq8SAtpJRlmb8vf5orEvxKuWYwItW8PIKPAE+VgX2dtMd65DZx44WvsB/+TYsCBGHhdeJGa9fDx6kaOUD9RqnWWhDbIDDGRdRM5nPpoCI47CanE0msuxpA2Uqgzo8rk4+7cOuHTfwX9ezrsBxg7kDoNTjnDzo1/DZXWj1wTgL7Jk5byb74nm1kYQcLaSMt0renViU3Q2360ZGgoPYpiBZU82+QY4MJ35V1/qybLjuRKIlkq/BJS55rDBVjDAZhpfbXee0x2fIRCSLMv5iLKUkFRuRUa9XQegCn0bImCq4g67SVW5zcI9r+d7VA+DcWxGHKOdVK57xsaX/npEprgS32dQRE8ltF7+3SvAWfao2X+RUqQ7LaBz5dCq4MSX2YNo/OBjorIC++eQKLBWqlZBU9fgvVh0W+p4e6ej8oWjrh1zH4WhPka2fbk6FL6pbIaYNWksoiGwZSACjBvepes0Hi2aYP4Mill9dbsB3N6ppocpH5Bq3/eoPGWyn2GKQCz6MaszFUjbgUkKMTM1K3J+zMPJRCJcwbPeEEZxlF8hp8lS9D itvWKtB1 UVNqXLAN8ZXyPUqQMBS/zYnNnBLswRlVQyeq7LLgUBBBD7nYQHZFZBHB0GD8Pro1Wzhep+D0zvHDkIG5thOUDfFRlgsSkJgXTLOfeO3VnuKwmsv7t3qCBBaDayS2qxc/QZkUp0IR0q6To0gTuNxSRcDincM8Mo4gA9e7u7agh7THXb2o5MLz9dMsOL3dHOngPMXOGXkerEizEeESyfCRRE/JHhYMjPFgiUY6c+MUUa6TQLoDRLvyE2ca+TqbW01l2ZCAASFoLAVimjUg7oP6GDZysKzZrmdovpnA9wVz7e4N3pkHhtg3ahIGhpV+i2gGuSgMpig60E6qFclRVAF1y7j5eDX7CRCIFf+IYXm9fPXYx02SRb9Puo5xzAQuYvOtNIPFTqVShUwIcIKsPvjhCImncLkBNRbZeeM0ljrb8jIQRmVd3mcCVlkefRQ4isoUaHUP1MbONIDEyZT1Gy+mEH4I6X7lGm62Adn1C 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 Mon, Aug 19, 2024 at 12:29:34PM -0700, Linus Torvalds wrote: > On Mon, 19 Aug 2024 at 11:53, Nathan Chancellor wrote: > > > > > > Modules linked in: > > Pid: 24, comm: mount Not tainted 6.11.0-rc4-next-20240819 > > RIP: 0033:0x68006f6c > > RSP: 000000006c8bfc68 EFLAGS: 00010206 > > RAX: 0000000068006f6c RBX: 0000000068a0aa18 RCX: 00000000600d8b09 > > RDX: 0000000000000000 RSI: 0000000068a0aa18 RDI: 0000000068805120 > > RBP: 000000006c8bfc70 R08: 0000000000000001 R09: 0000000068ae0308 > > R10: 000000000000000e R11: ffffffffffffffff R12: 0000000000000001 > > R13: 0000000068a0aa18 R14: 0000000000000015 R15: 0000000068944a88 > > Kernel panic - not syncing: Segfault with no mm > > CPU: 0 UID: 0 PID: 24 Comm: mount Not tainted 6.11.0-rc4-next-20240819 #1 > > Stack: > > 600caeff 6c8bfc90 600d8b2a 68944a80 > > 00000047 6c8bfda0 600cbfd9 6c8bfd50 > > 68944ad0 68944a88 7f7ffff000 7f7fffffff > > Call Trace: > > [<600caeff>] ? special_mapping_close+0x16/0x19 > > Hmm. No "Code:" line? Did you just edit that out, or maybe UML doesn't > print one out? Nope, no editing, it is straight from my terminal. I guess UML just doesn't print one. > Anyway, for me that special_mapping_close() disassembles to > > > <+0>: mov %rdi,%rsi > <+3>: mov 0x78(%rdi),%rdi > <+7>: mov 0x20(%rdi),%rax > <+11>: test %rax,%rax > <+14>: je 0x600caa11 > <+16>: push %rbp > <+17>: mov %rsp,%rbp > <+20>: call *%rax > <+22>: pop %rbp > <+23>: ret > <+24>: ret > > which may just match yours, because special_mapping_close+0x16 is > obviously that +22, and it's the return point for that call. Yeah seems like it, objdump -dr shows: 0000000000000027 : 27: 48 89 fe mov %rdi,%rsi 2a: 48 8b 7f 78 mov 0x78(%rdi),%rdi 2e: 48 8b 47 20 mov 0x20(%rdi),%rax 32: 48 85 c0 test %rax,%rax 35: 74 08 je 3f 37: 55 push %rbp 38: 48 89 e5 mov %rsp,%rbp 3b: ff d0 call *%rax 3d: 5d pop %rbp 3e: c3 ret 3f: c3 ret > And your %rax value does match that invalid %rip value of 0x68006f6c. > > So it does look like it's jumping off to la-la-land, and the problem is the code > > const struct vm_special_mapping *sm = vma->vm_private_data; > > if (sm->close) > sm->close(sm, vma); > > where presumably 'vm_private_data' isn't a "struct vm_special_mapping *" at all. > > And I think I see the problem. > > When we have that 'legacy_special_mapping_vmops', then the > vm_private_data field actually points to 'pages'. > > So the 'legacy_special_mapping_vmops' can *only* contain the '.fault' > handler, not the other handlers. > > IOW, does something like this fix it? > > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -2095,7 +2095,6 @@ static const struct vm_operations_struct > special_mapping_vmops = { > }; > > static const struct vm_operations_struct legacy_special_mapping_vmops = { > - .close = special_mapping_close, > .fault = special_mapping_fault, > }; Yes, that appears to fix it for me. I don't have much to say about the rest but others might :) Cheers, Nathan