iommufd: Fix out_fput in iommufd_fault_alloc()
authorNicolin Chen <nicolinc@nvidia.com>
Tue, 3 Dec 2024 08:02:54 +0000 (00:02 -0800)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 3 Dec 2024 16:15:00 +0000 (12:15 -0400)
As fput() calls the file->f_op->release op, where fault obj and ictx are
getting released, there is no need to release these two after fput() one
more time, which would result in imbalanced refcounts:
  refcount_t: decrement hit 0; leaking memory.
  WARNING: CPU: 48 PID: 2369 at lib/refcount.c:31 refcount_warn_saturate+0x60/0x230
  Call trace:
   refcount_warn_saturate+0x60/0x230 (P)
   refcount_warn_saturate+0x60/0x230 (L)
   iommufd_fault_fops_release+0x9c/0xe0 [iommufd]
  ...
  VFS: Close: file count is 0 (f_op=iommufd_fops [iommufd])
  WARNING: CPU: 48 PID: 2369 at fs/open.c:1507 filp_flush+0x3c/0xf0
  Call trace:
   filp_flush+0x3c/0xf0 (P)
   filp_flush+0x3c/0xf0 (L)
   __arm64_sys_close+0x34/0x98
  ...
  imbalanced put on file reference count
  WARNING: CPU: 48 PID: 2369 at fs/file.c:74 __file_ref_put+0x100/0x138
  Call trace:
   __file_ref_put+0x100/0x138 (P)
   __file_ref_put+0x100/0x138 (L)
   __fput_sync+0x4c/0xd0

Drop those two lines to fix the warnings above.

Cc: stable@vger.kernel.org
Fixes: 07838f7fd529 ("iommufd: Add iommufd fault object")
Link: https://patch.msgid.link/r/b5651beb3a6b1adeef26fffac24607353bf67ba1.1733212723.git.nicolinc@nvidia.com
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/iommu/iommufd/fault.c

index 053b0e30f55a9b74e1e10699ab8d4e2f63fc1248..1fe804e28a8663838e6de855775f261a43d0c915 100644 (file)
@@ -420,8 +420,6 @@ out_put_fdno:
        put_unused_fd(fdno);
 out_fput:
        fput(filep);
-       refcount_dec(&fault->obj.users);
-       iommufd_ctx_put(fault->ictx);
 out_abort:
        iommufd_object_abort_and_destroy(ucmd->ictx, &fault->obj);