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 C25A9C02181 for ; Wed, 22 Jan 2025 22:16:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 31E0D6B007B; Wed, 22 Jan 2025 17:16:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2CCEB6B0082; Wed, 22 Jan 2025 17:16:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 195306B0083; Wed, 22 Jan 2025 17:16:55 -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 EF5696B007B for ; Wed, 22 Jan 2025 17:16:54 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id ACBA8160893 for ; Wed, 22 Jan 2025 22:16:54 +0000 (UTC) X-FDA: 83036498748.01.0A05702 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf08.hostedemail.com (Postfix) with ESMTP id EBDA116000E for ; Wed, 22 Jan 2025 22:16:52 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="b/X4S5Ai"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of 3U26RZwsKCLgYaicpjcwrleemmejc.amkjglsv-kkitYai.mpe@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3U26RZwsKCLgYaicpjcwrleemmejc.amkjglsv-kkitYai.mpe@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737584213; a=rsa-sha256; cv=none; b=l1x/RgY0HLswiwukfVNU5jOhN19uT0You9b9+MkgxU/dMgLryH1J8e6nZxU8xSx39WIreb mLj2B8xy73KiRE+KCx+CvVhwCuiyHlZBR24iZbWcFGBIsvKGs/y7Lb0qQdw1FzahRhgrPF 6m63sCLcjHMCmM/oilK03UrYId+QmL4= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="b/X4S5Ai"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of 3U26RZwsKCLgYaicpjcwrleemmejc.amkjglsv-kkitYai.mpe@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3U26RZwsKCLgYaicpjcwrleemmejc.amkjglsv-kkitYai.mpe@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737584213; 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:dkim-signature; bh=l3V32wmuFdo3eyYq3ItjWLe5TmAQhDXOPpNz76RK2rI=; b=jCfCoct80yhsT9m1Gi3YUOW8KY6opON3AtHXF+Dz6Pspwdj211Ki+s2AF0gjB5GUHJPVe5 hOilmk6Xqr5NMWx71hgkx9AIOg07/r1yrdDqSKjPI5fvUj/gQerVqAIwY2Ydt/NPmX4TxS F1LsTT/4PukRXZLQPx1x5LZGk9Gyo/4= Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2165433e229so3616795ad.1 for ; Wed, 22 Jan 2025 14:16:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1737584211; x=1738189011; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=l3V32wmuFdo3eyYq3ItjWLe5TmAQhDXOPpNz76RK2rI=; b=b/X4S5AiYNbuQyarkTO4SSzbAZ4QRtk1NIr86a+gOAUN8ln2J0YR6A3JDYoY1UsAQc ThiTEziIf069GILtCViH2r2M37GwagX55hm6bDlDog8aMd775HbOm3UcBt/r7Uc9g/Em 52E8cE+NMmeoxSLX4vPDpzEoydaXbp1VLbfgyM6J+Yx7nte/YYkW/0K3pLk6z9cMO1Jd edTradBTwCwMFcJYaZuZDpYctEdEa7T//Hu51omly2dcuVw5UtWff8vuo8HkUwi/s9VC Hhv40KZTD009tMr7TVFb8EJUqRDA5VyS8L57sCBtrIJ6hvhgPwFCJPL3ZZYuCl8hnGrn iZ1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737584211; x=1738189011; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=l3V32wmuFdo3eyYq3ItjWLe5TmAQhDXOPpNz76RK2rI=; b=Jl9OuYLywNT4V5LUmuGUm+hAnMOwMEoFAAeNT7p53oJBvXdIN75UFoqNdkeROAVcir L2Y870Ru8aUEpn4Oh3koskAO7+Pi/99u2Kk10WwEiYTIxi3200cOoHZtpJVztYJ8wu/G tLz1gkcrItblJazKIZEAA9bgE2UX3r8osAU9lFPQS+R14m0OvRaePj/NDfN2XQOtQE9u vPSethlbPZ4NYr6EQgKGO43U1annehTO2mCMq8j9o9jPtG+3xtdjcsVFz8stKCG5qfO/ Ey+PXvJQEmHWKPTW+Ce4wW6eS+mAcG8QJHrqqf+ra8d41GH9irHgySLVelGeirZrWLb2 uLPA== X-Forwarded-Encrypted: i=1; AJvYcCVd2PiiA+jBty0uG0gBhnvWSYX8bBe0XnEE+r1kORpBVANXw1xRvYhNsNbFOaKoOrsSC4/uQBDd8Q==@kvack.org X-Gm-Message-State: AOJu0Yw5TyGysRUWwk9+K3jcqyosV7ENmGqz2r7lDtvKs/88Kq94TroW SJ+YYYgkLWCt7q7pq5T5AAjdtOSBho+d0c58zyOFeWDZNKWVXPjsS/tzE+3lNTDfXUYRjeS3DJc JDuKgphhXwc2ZoUpqIWPxCA== X-Google-Smtp-Source: AGHT+IHawiM1cnWjjBgTMESBdCjxT4zEuIO00j/eJjzTR5bXkQ6p3w/HrFV8L27JfxuD2cLer72tmGSBr5cfS1Cwuw== X-Received: from pfbjc33.prod.google.com ([2002:a05:6a00:6ca1:b0:728:e508:8a48]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:8412:b0:1e1:96d9:a7db with SMTP id adf61e73a8af0-1eb2147021cmr35174465637.4.1737584211338; Wed, 22 Jan 2025 14:16:51 -0800 (PST) Date: Wed, 22 Jan 2025 22:16:49 +0000 In-Reply-To: <20250117163001.2326672-7-tabba@google.com> (message from Fuad Tabba on Fri, 17 Jan 2025 16:29:52 +0000) Mime-Version: 1.0 Message-ID: Subject: Re: [RFC PATCH v5 06/15] KVM: guest_memfd: Handle final folio_put() of guestmem pages From: Ackerley Tng To: Fuad Tabba Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, yu.c.zhang@linux.intel.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, tabba@google.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: EBDA116000E X-Rspamd-Server: rspam10 X-Stat-Signature: 38zybcbxc5pch3jxxygoojpp4f11n4an X-HE-Tag: 1737584212-329044 X-HE-Meta: U2FsdGVkX19F4x7s78Gb0/bkGZLgMmdJBOaEmNjvUijYfNAlKiZvEBNfXo1sZYIcMx0okpCz3mDkmsUGZLhAiI2Ertfa/q6ZHFA2AmUZzvTliFWuHPNSmsO0dyoT7ksapqhAL+iYMoAJ6eYa5SLB8xnF9XzctVHIMn7UDj4iUGch+wfttMmYxIcqsgERj1box2PaZpyI3LzwDVqwXXf3NkAaG6lu27eohkPm0aydxwpA5DjVYbeIjqkeVwE9wMfUB8ewKpCkBUVo/mo7W2OiOm8B1D0PwVrI+fzvsE5gZOklOllt2cQZ7l4IZihYNqrMr+7nM5VS5xMSboldSEjmbaTFEWm2XnKAJTG9qYncjciCGiWBBUU7SUSIx1S/d2q0ocFLk+wb9OeaeE/XJLNUD/kMW7fHsTn3D3h9oL24stni5/VIKZVKQe3LMdyUmswtwc1P+PVKW/RoyjPfYHPXrwmazi5m7HS7pO0ICK+ktJDMCEZURIZJTdGml1mPejiAm6+yYygZ5WEh4p6dlj1O9iToDn4EZ9dalhtxlicOgYSg6r1haoKjYrf03K+xYhVUtAEJmL2PfYUe+icXmlZFPyMS10VW4OblTGUFL2WEOshFKez6YY9OGxEGBHxuV3OOfOIeUYIeyYmRjwY/v3YbbiAX9G8BzpOhBJ8nm0A7t+lQkOssJO2Y/d7fIMumCJofZMz4cGxup1aBiRgc0rb7AASuZ4pTY0OlFiFiOT4z5Yael7Xxy5aUpCwek2jmbCx+pLbrk5HwmqO9xxdmEBfJ4laK57kCnSSEm/Ijx1j0+7SYmyNJCvLWN9dRdRXb/ZDqGzS8ZrWvke3DLx3TxmVGAFUKJ+00wZ+CZC70JqalkaEFwMZ5IHTXWXIctyYBcK1/Xf4k9dbVCIOv555FDfW0jDO2lkKJ3zdhAxew5JJPX9M+Uik2odk8W7xrIhQ9hmpZG8XvY6W5wRB7138Br/d atq6W3Yg iDkR+WNkGekTYLSBUDYKUnkRfMlpJAKcBo6xByBGBMpQ3EIxeoKijonwkNRheKAl14ioXTw8N8b4jJwQBq3bZKxPu1KbucVZ0jrnpn/GjeCK8Fgz3NvgoWDC9F5eqdr1qn9+BCEnjJDeXQC5MTOYIS3XbQgG/26At3LBZ8B7zBmahGX2AaS/e/XfXmaSNbjIu4eiSsi/U1YulNf+Xetl8ZGALZjJxUFXkFblNq/4opxuu2RSSTw7JU4v4JcXO3sgzcN+65HjJdjT4+uOf+a8V4CqIeUphxySn69JvI4Gk+UR0Tg4d90ZnLAEsuiEKJFJBZFGxiEWH2lCnSe51oNyq2Gw6S+fl1bZPyn1JTotbPmGip8vtn2s0ckM6KLlIJEVTk4QL+pnpZ2ajNsaEzRoIkxptLnorb0xsiLS52wKpB9s4xylzRXu99iCHkrrT38Rn78pHT13zcih5oQQp1JqpOXZlMARa8XSWG0aRV3ZoVkdONxIZqr4DW2/5Xj8i3LzrQmo+kMBWtXV68an/VwweVMCGcXY/+g6z9qDEtYamywA+dreVKpJXns2twV0UqzIUJKo+ZQxeZFa2PtM9ilbe/kv6ecfLhn2Kx7xnVx2z438rvVD8JG9HpNi0dZQc2NIVZyZPyyWggSHaumFncQP4c085d4amD2HquRt6hZvAxUASLb0HhcVhsoapKQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.014608, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Fuad Tabba writes: Hey Fuad, I'm still working on verifying all this but for now this is one issue. I think this can be fixed by checking if the folio->mapping is NULL. If it's NULL, then the folio has been disassociated from the inode, and during the dissociation (removal from filemap), the mappability can also either 1. Be unset so that the default mappability can be set up based on GUEST_MEMFD_FLAG_INIT_MAPPABLE, or 2. Be directly restored based on GUEST_MEMFD_FLAG_INIT_MAPPABLE > > > + > +/* > + * Callback function for __folio_put(), i.e., called when all references by the > + * host to the folio have been dropped. This allows gmem to transition the state > + * of the folio to mappable by the guest, and allows the hypervisor to continue > + * transitioning its state to private, since the host cannot attempt to access > + * it anymore. > + */ > +void kvm_gmem_handle_folio_put(struct folio *folio) > +{ > + struct xarray *mappable_offsets; > + struct inode *inode; > + pgoff_t index; > + void *xval; > + > + inode = folio->mapping->host; IIUC this will be a NULL pointer dereference if the folio had been removed from the filemap, either through truncation or if the guest_memfd file got closed. > + index = folio->index; And if removed from the filemap folio->index is probably invalid. > + mappable_offsets = &kvm_gmem_private(inode)->mappable_offsets; > + xval = xa_mk_value(KVM_GMEM_GUEST_MAPPABLE); > + > + filemap_invalidate_lock(inode->i_mapping); > + __kvm_gmem_restore_pending_folio(folio); > + WARN_ON_ONCE(xa_err(xa_store(mappable_offsets, index, xval, GFP_KERNEL))); > + filemap_invalidate_unlock(inode->i_mapping); > +} > + > static bool gmem_is_mappable(struct inode *inode, pgoff_t pgoff) > { > struct xarray *mappable_offsets = &kvm_gmem_private(inode)->mappable_offsets;