From: Jason Gunthorpe <jgg@ziepe.ca>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: Joel Granados <j.granados@samsung.com>,
Kevin Tian <kevin.tian@intel.com>, Joerg Roedel <joro@8bytes.org>,
Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
Jean-Philippe Brucker <jean-philippe@linaro.org>,
Nicolin Chen <nicolinc@nvidia.com>, Yi Liu <yi.l.liu@intel.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>,
iommu@lists.linux.dev, linux-kselftest@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/6] iommufd: Deliver fault messages to user space
Date: Fri, 8 Dec 2023 09:41:39 -0400 [thread overview]
Message-ID: <20231208134139.GW1489931@ziepe.ca> (raw)
In-Reply-To: <c72184d8-693d-43ce-aed9-00a8fc684137@linux.intel.com>
On Fri, Dec 08, 2023 at 01:47:35PM +0800, Baolu Lu wrote:
> On 12/8/23 1:17 AM, Jason Gunthorpe wrote:
> > On Thu, Dec 07, 2023 at 05:34:10PM +0100, Joel Granados wrote:
> > > > @@ -58,6 +255,8 @@ static void hw_pagetable_fault_free(struct hw_pgtable_fault *fault)
> > > > WARN_ON(!list_empty(&fault->deliver));
> > > > WARN_ON(!list_empty(&fault->response));
> > > > + fput(fault->fault_file);
> > > > + put_unused_fd(fault->fault_fd);
> > > I have resolved this in a naive way by just not calling the
> > > put_unused_fd function.
> > That is correct.
> >
> > put_unused_fd() should only be called on error paths prior to the
> > syscall return.
> >
> > The design of a FD must follow this pattern
> >
> > syscall():
> > fdno = get_unused_fd_flags(O_CLOEXEC);
> > filep = [..]
> > // syscall MUST succeed after this statement:
> > fd_install(fdno, filep);
> > return 0;
> >
> > err:
> > put_unused_fd(fdno)
> > return -ERRNO
>
> Yes. Agreed.
>
> >
> > Also the refcounting looks a little strange, the filep reference is
> > consumed by fd_install, so what is that fput pairing with in fault_free?
>
> fput() pairs with get_unused_fd_flags()? fd_install() does not seem to
> increase any reference.
fd_install() transfers the reference to the fd table and that
reference is put back by the close() system call.
Notice that instantly after fd_install() a concurrent user can free
the filep.
Jason
next prev parent reply other threads:[~2023-12-08 13:41 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20231026024930.382898-1-baolu.lu@linux.intel.com>
2023-11-02 12:47 ` [PATCH v2 0/6] IOMMUFD: Deliver IO page faults to user space Jason Gunthorpe
2023-11-07 8:35 ` Tian, Kevin
2023-11-07 17:54 ` Jason Gunthorpe
2023-11-08 8:53 ` Tian, Kevin
2023-11-08 17:39 ` Jason Gunthorpe
[not found] ` <c774e157-9b47-4fb8-80dd-37441c69b43d@linux.intel.com>
2023-11-15 13:58 ` Jason Gunthorpe
2023-11-16 1:42 ` Liu, Jing2
2023-11-21 0:14 ` Jason Gunthorpe
2023-11-29 9:08 ` Shameerali Kolothum Thodi
2023-11-30 3:44 ` Baolu Lu
2023-12-01 14:24 ` Jason Gunthorpe
2023-12-08 5:57 ` Baolu Lu
2023-12-08 13:43 ` Jason Gunthorpe
[not found] ` <20231026024930.382898-2-baolu.lu@linux.intel.com>
2023-12-01 14:38 ` [PATCH v2 1/6] iommu: Add iommu page fault cookie helpers Jason Gunthorpe
2023-12-08 6:24 ` Baolu Lu
[not found] ` <20231026024930.382898-3-baolu.lu@linux.intel.com>
2023-12-01 15:14 ` [PATCH v2 2/6] iommufd: Add iommu page fault uapi data Jason Gunthorpe
2023-12-08 6:35 ` Baolu Lu
[not found] ` <20231026024930.382898-5-baolu.lu@linux.intel.com>
2023-12-01 15:24 ` [PATCH v2 4/6] iommufd: Deliver fault messages to user space Jason Gunthorpe
2023-12-08 11:43 ` Baolu Lu
[not found] ` <CGME20231207163412eucas1p2fa912b4923031804c27c764e5c8d67e7@eucas1p2.samsung.com>
2023-12-07 16:34 ` Joel Granados
2023-12-07 17:17 ` Jason Gunthorpe
2023-12-08 5:47 ` Baolu Lu
2023-12-08 13:41 ` Jason Gunthorpe [this message]
[not found] ` <b822096cc3b441309d99832c587be25a@huawei.com>
2024-01-15 16:47 ` Jason Gunthorpe
[not found] ` <b1663110e1ca4301834f403270357bea@huawei.com>
2024-01-15 17:58 ` Jason Gunthorpe
[not found] ` <CGME20231204150747eucas1p2365e92a7ac33ba99b801d7c800acaf6a@eucas1p2.samsung.com>
2023-12-04 15:07 ` [PATCH v2 0/6] IOMMUFD: Deliver IO page faults " Joel Granados
2023-12-04 15:32 ` Jason Gunthorpe
2023-12-08 5:10 ` Baolu Lu
[not found] ` <20231026024930.382898-4-baolu.lu@linux.intel.com>
[not found] ` <CGME20231212131010eucas1p104d069ac6d6c97fce4987caa62c996ee@eucas1p1.samsung.com>
2023-12-12 13:10 ` [PATCH v2 3/6] iommufd: Initializing and releasing IO page fault data Joel Granados
2023-12-12 14:12 ` Jason Gunthorpe
2023-12-13 2:04 ` Baolu Lu
2023-12-13 2:15 ` Tian, Kevin
2023-12-13 13:19 ` Jason Gunthorpe
[not found] ` <CGME20240112215609eucas1p1eedeeee8e1cca2c935b41816a50f56f6@eucas1p1.samsung.com>
2024-01-12 21:56 ` [PATCH v2 0/6] IOMMUFD: Deliver IO page faults to user space Joel Granados
2024-01-14 13:13 ` Baolu Lu
2024-01-14 17:18 ` Joel Granados
2024-01-15 1:25 ` Baolu Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231208134139.GW1489931@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=j.granados@samsung.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=jean-philippe@linaro.org \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=will@kernel.org \
--cc=yi.l.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).