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 E59E8C3DA4A for ; Mon, 19 Aug 2024 19:29:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51B166B007B; Mon, 19 Aug 2024 15:29:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4CB316B0082; Mon, 19 Aug 2024 15:29:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B9F56B0083; Mon, 19 Aug 2024 15:29:57 -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 204986B007B for ; Mon, 19 Aug 2024 15:29:57 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 937974146A for ; Mon, 19 Aug 2024 19:29:56 +0000 (UTC) X-FDA: 82469985192.18.2ACBD7B Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by imf12.hostedemail.com (Postfix) with ESMTP id 4E8024001B for ; Mon, 19 Aug 2024 19:29:54 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=chZvVhQz; dmarc=none; spf=pass (imf12.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.48 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724095731; a=rsa-sha256; cv=none; b=Mt7jOmCYOWP9sdRYVyxN8wh/U1ncqorjJ/cC9op8LZxm+uPaCu3qHq+6LK6b/PYPpSi6ZU uyX+0y0t934Et95IEA1hMpzXnZ+jrK20dUx84hPOP7JN4MBhqnbhYe5uaKGIerubektIaz mUgZQCWTL8QGmnj91yYQ0PnyR27azZw= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=chZvVhQz; dmarc=none; spf=pass (imf12.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.48 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724095731; 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=3ie0bvC9ROJLnfutVE8C94bre2OY3y4q//fAPg+wLI0=; b=Uf4Bj/GmVw610c/qBd2wunq/E1CL+mmCJgGm3gB6dEpt+B2+dYzrnqdKy4lkXJBmhGRK+w Ri8AgFOuXKWpjxNCVfwYr0eWU1b9o1HM/ZFjD4KxuEKyd5KYvGMedXdR8KNRz0wnds/jVG qyIkD4vZVMOQQFX+6o3ueLU9QhRZkwQ= Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a86464934e3so12292366b.3 for ; Mon, 19 Aug 2024 12:29:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1724095792; x=1724700592; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3ie0bvC9ROJLnfutVE8C94bre2OY3y4q//fAPg+wLI0=; b=chZvVhQzMFvTnxWrfvHsNeqsSXeKzrZ4vSPAlu2XQDCsYNecN6iS6arARvP42cTKn7 hHVjHlLnuyC6sod6U4t14CrovDcNhspovCpMW00FC3mwJg5128yhAMatVy5M/ULtgV4b FOa7Y+JnASf008abxpwzhSFFz0dbluMGVpvDM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724095792; x=1724700592; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3ie0bvC9ROJLnfutVE8C94bre2OY3y4q//fAPg+wLI0=; b=uIQ43NVxKsB09BvSHDl6aPxhAeFlibuoh3VHxF2E7tQMThKCFCF898EOtV/OJBcDqS lgg4c9fo4iR6BqNV4qEV91rINVtaXHGJo1gmYBSjzeXV7XSpVXBG0BiaEu8p/l4k3SWS qFsYt5Sp22vzkvPql0Ir31wcU+gNo59cf4wglOLcx7yxV5R9QQEqCCx6urhxDb0xAa7h dDIyznzPKvzqrUMsIUV24WYT/tqeBmESpMG/FGeK7CuwXHnYKaZUo9Q9LlC3E2xYJq8y KF62qeZh5/5ED7oRdRU2kTGMD0RJyGvVysSIXtBZRQ9S71U6ZQux9nQSf6KW3wgWm5TB dNAg== X-Forwarded-Encrypted: i=1; AJvYcCUGpn7ae7HoqEj0W+xRQ/rP5ORLeCH/aLrPz6l03oDBUnQRiX3t9J7pohXvSscNCN1dlrHRMFAgEQ==@kvack.org X-Gm-Message-State: AOJu0YwXqPR3m13S7ELK7JcUeHIMn/B1sFTjFQAmFC16MVB4RBSgvtLz qHjL6bWpXptgv8GYcP64x3QWjdwF/5msUwesDO6lpx/Rttte2OFA3qJ/KEkZbFEVmWgUKf3Gbp0 N16WzYA== X-Google-Smtp-Source: AGHT+IFRKbBK0D4oOTGf9MJc8m3nNtqMSajyjt2fHG3AB4NEpIPpiKsGt1uIpiJyO58tq3x5JbYcNQ== X-Received: by 2002:a17:907:9686:b0:a7d:30d2:28f8 with SMTP id a640c23a62f3a-a8392a3923bmr685392466b.68.1724095791911; Mon, 19 Aug 2024 12:29:51 -0700 (PDT) Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com. [209.85.208.45]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a83839471b4sm666741766b.164.2024.08.19.12.29.51 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Aug 2024 12:29:51 -0700 (PDT) Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5bed83488b6so3564574a12.2 for ; Mon, 19 Aug 2024 12:29:51 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCXuWZyNtTSAqW9knRHcApsKD318AavuZN7XmNcdfoow1Z/8zn4f58xndbr+dtbiQhmeovF10z6fUg==@kvack.org X-Received: by 2002:a05:6402:42d5:b0:5a2:68a2:ae52 with SMTP id 4fb4d7f45d1cf-5beca26d2f5mr9265659a12.0.1724095790870; Mon, 19 Aug 2024 12:29:50 -0700 (PDT) MIME-Version: 1.0 References: <20240812082605.743814-1-mpe@ellerman.id.au> <20240819185253.GA2333884@thelio-3990X> In-Reply-To: <20240819185253.GA2333884@thelio-3990X> From: Linus Torvalds Date: Mon, 19 Aug 2024 12:29:34 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 1/4] mm: Add optional close() to struct vm_special_mapping To: Nathan Chancellor 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 Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 4E8024001B X-Stat-Signature: 79qqeurz1bdqb4uffwdn91xgqtjj7ty7 X-Rspam-User: X-HE-Tag: 1724095794-340578 X-HE-Meta: U2FsdGVkX1+p7wrCryc2Zlzf8WrHvDLEXCwMUddEvmx7zjAxiy3AtSIRZKFb8g/PH7rzxhIPkkRsYhtgw2s0eYi/R7KZu1YLjQTWEcaes9F/7V7sl8v7RZVtLTI+l8Zz7x/z4cuEC5UXrNbE+6yjApYIqIN5Cq3Klyq74Kukenwy+ouqATTjUsMiiKK2AMdaaofBEvDzmLfHiCyuleR/E6y93hb4zTXcV2GdZP93N2DVtHEqr1nuZCP/Lv59iId9uCtlcIXJMMn/OxeYPSuMhAXwIA2fj6onBLcB0gQ9y/YJKElaehWpcdykqFK4szjTfQOp5TbpzGiSV5FWv2NkGlyzhzbyoMM7F8UZv+JX6kR0S+HZFfzjmxbJ9xOAT3fMhJdzaMGMczqw3LVt5q6dpbtd2ImdWmANCeyAMcnPuUIOWpPG4eN8YuWQIqKSflV0nTnTuVWRVy4pycf7waVz94j9z26B+yNRsPKHjaosHXJtQXPhdnLkmOGUOkoo6gnv6nnUZGkJNDbNdI5UqT/Dx6JBTKBxtuZMqJG8C5hysku9ypPQn/xMiDmWCJ571ykeYf7huQY41Qdl4xqeCuGKr1H9t69Qfa3ASIJ7Dv9BjKx9Dx7f5qC2+HU+8o2qAjTVaWwNGIAg00CShMmThjhhr7iCgt46vjwpKsUS+nPC6vTqFV6QHMuwpum6X/N8Q2ox1aulEzi1FIx3oMJ33Du0/Gi90l5SyGWghUXDTfswoY6Spa5QJf4lm3tYnJcs16zQFKkMkvctbmMId59t7VB5fWKva2Wp2ekgNk1jzPU1Oqykjl+j6NKOlRKyQPmPFvQ88mF5dFU3jBMfOqte3jLOsIMbxrpwSkk02WT3rr6sFjgpkrb68DLuVsZDC+2hoR9eNaEVcRm+SL7Tx8pOn002ev8RfR4zWiinctmXhtysv5lWsB0u0ct/w3Uf0Om5WIIKTE6oxS94ebzhPBrPyl9 /j0GcN8E sG8Sls187wZL9iEBCZk7q/wOCMCf2FE2+rpUgOC96sl4xqgJ1Oo+yW5EjmT6rN3EEfxZmNbjyuLqzCmqV+KXTS4h3dpd4dT/FIWP2tVy800fa0xPBm41HcaaXy/LnIRwOzhB2IYSSH0mNoGc33NvMS1HWs7LCrtTac7kCvfXkoPnb3VvYUtwnMQ8F3e1biL89fOzNHkXBq3mlbwTT3EouPczeUSMH4LZAXoDcPhWH4QIH9AfxOWe1W36hoEvp2XbC9p6P6kzbqkJ/zCHVl0kj44AAL+uvH9Dd5fvgjEc804LCfK3ZNJZCa6OUF94fv1qh64P8nIlX5o8X8TC8j83iW7hw+0maHRO3LlmjZAtSc7itcnWnAppnp/uLgcXPzyKCQZ5iuHvNKR+FsSsyp9XZL1jnpWOg/DIFXfrFUcjKGeLSiYx6A5+6TQOUJ1AzlKC0PnfPvXByZi6IH+iVWkR9hvVZJJiS3KsTSnp0Pkm4EXccTxPW4n7iTxoJvuO6QuBiCpwuasvIzkyXpAjtY97QNlZQ3t0PpTbspyd73EqmhafppuiAQFdWdI5aDP/5N8fR4Aef1+KU0NXY2fnijGnqxYjYoz+N0j7f3FewuDcCM9LP5jugW4CeHFAX2YXYXoHUdmyFp2tQ44McBUo2iSETa603XpD11xVmjY0QESdj+beSDvDOt+9U7WgD7B3V2mExDKG1 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, 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? 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. 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, }; and honestly, we should have different 'fault' functions instead of having the same fault function and then making the function dynamically see which vm_operations_struct it was. But that's a separate issue. And oh Christ, the difference between "_install_special_mapping()" (which installs the modern style special mapping) and "install_special_mapping()" (which installs the legacy special mapping) is truly horrendously disgusting. And yes, UML uses that legacy crap, which explains why it happens on UML but not on sane architectures. As does csky, hexagon, and nios2. We should get rid of the legacy case entirely, and remove that insane difference between _install_special_mapping() and install_special_mapping(). But in the meantime, the one-liner fix *should* fix it. The four architectures that uses the legacy crud don't care about the close function anyway. What a horrid thing. Linus