]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommufd/selftest: Add missing close(mfd) in memfd_mmap()
authorNicolin Chen <nicolinc@nvidia.com>
Tue, 24 Jun 2025 18:00:46 +0000 (11:00 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 24 Jun 2025 18:45:12 +0000 (15:45 -0300)
Do not forget to close mfd in the error paths, since none of the callers
would close it when ASSERT_NE(MAP_FAILED, buf) fails.

Fixes: 0bcceb1f51c7 ("iommufd: Selftest coverage for IOMMU_IOAS_MAP_FILE")
Link: https://patch.msgid.link/r/a363a69dbf453d4bc1bde276f3b16778620488e1.1750787928.git.nicolinc@nvidia.com
Cc: stable@vger.kernel.org
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
tools/testing/selftests/iommu/iommufd_utils.h

index 72f6636e5d909911e6f06ec397f37c8e7e440c5a..6e967b58acfd348f77f84637a23d4c2e8587173d 100644 (file)
@@ -60,13 +60,18 @@ static inline void *memfd_mmap(size_t length, int prot, int flags, int *mfd_p)
 {
        int mfd_flags = (flags & MAP_HUGETLB) ? MFD_HUGETLB : 0;
        int mfd = memfd_create("buffer", mfd_flags);
+       void *buf = MAP_FAILED;
 
        if (mfd <= 0)
                return MAP_FAILED;
        if (ftruncate(mfd, length))
-               return MAP_FAILED;
+               goto out;
        *mfd_p = mfd;
-       return mmap(0, length, prot, flags, mfd, 0);
+       buf = mmap(0, length, prot, flags, mfd, 0);
+out:
+       if (buf == MAP_FAILED)
+               close(mfd);
+       return buf;
 }
 
 /*