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")
Cc: sta...@vger.kernel.org
Signed-off-by: Nicolin Chen <nicol...@nvidia.com>
---
 tools/testing/selftests/iommu/iommufd_utils.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/iommu/iommufd_utils.h 
b/tools/testing/selftests/iommu/iommufd_utils.h
index 72f6636e5d90..6e967b58acfd 100644
--- a/tools/testing/selftests/iommu/iommufd_utils.h
+++ b/tools/testing/selftests/iommu/iommufd_utils.h
@@ -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;
 }
 
 /*
-- 
2.43.0


Reply via email to