Anthony Iliopoulos 049d5e
From 983d8e60f50806f90534cc5373d0ce867e5aaf79 Mon Sep 17 00:00:00 2001
Anthony Iliopoulos 049d5e
From: "Darrick J. Wong" <djwong@kernel.org>
Anthony Iliopoulos 049d5e
Date: Wed, 22 Dec 2021 14:19:18 -0800
Anthony Iliopoulos 049d5e
Subject: [PATCH] xfs: map unwritten blocks in XFS_IOC_{ALLOC,FREE}SP just like
Anthony Iliopoulos 049d5e
 fallocate
Anthony Iliopoulos 049d5e
Git-commit: 983d8e60f50806f90534cc5373d0ce867e5aaf79
Anthony Iliopoulos 049d5e
Patch-mainline: v5.16
Anthony Iliopoulos 049d5e
References: bsc#1194272 CVE-2021-4155
Anthony Iliopoulos 049d5e
Anthony Iliopoulos 049d5e
The old ALLOCSP/FREESP ioctls in XFS can be used to preallocate space at
Anthony Iliopoulos 049d5e
the end of files, just like fallocate and RESVSP.  Make the behavior
Anthony Iliopoulos 049d5e
consistent with the other ioctls.
Anthony Iliopoulos 049d5e
Anthony Iliopoulos 049d5e
Reported-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Anthony Iliopoulos 049d5e
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Anthony Iliopoulos 049d5e
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Anthony Iliopoulos 049d5e
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Anthony Iliopoulos 049d5e
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Anthony Iliopoulos 049d5e
Acked-by: Anthony Iliopoulos <ailiop@suse.com>
Anthony Iliopoulos 049d5e
Anthony Iliopoulos 049d5e
---
Anthony Iliopoulos 049d5e
 fs/xfs/xfs_ioctl.c | 3 ++-
Anthony Iliopoulos 049d5e
 1 file changed, 2 insertions(+), 1 deletion(-)
Anthony Iliopoulos 049d5e
Anthony Iliopoulos 049d5e
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
Anthony Iliopoulos 049d5e
index 174cd8950cb6..bc85e045845d 100644
Anthony Iliopoulos 049d5e
--- a/fs/xfs/xfs_ioctl.c
Anthony Iliopoulos 049d5e
+++ b/fs/xfs/xfs_ioctl.c
Anthony Iliopoulos 049d5e
@@ -687,7 +687,8 @@ xfs_ioc_space(
Anthony Iliopoulos 049d5e
Anthony Iliopoulos 049d5e
 	if (bf->l_start > XFS_ISIZE(ip)) {
Anthony Iliopoulos 049d5e
 		error = xfs_alloc_file_space(ip, XFS_ISIZE(ip),
Anthony Iliopoulos 049d5e
-				bf->l_start - XFS_ISIZE(ip), 0);
Anthony Iliopoulos 049d5e
+				bf->l_start - XFS_ISIZE(ip),
Anthony Iliopoulos 049d5e
+				XFS_BMAPI_PREALLOC);
Anthony Iliopoulos 049d5e
 		if (error)
Anthony Iliopoulos 049d5e
 			goto out_unlock;
Anthony Iliopoulos 049d5e
 	}
Anthony Iliopoulos 049d5e
--
Anthony Iliopoulos 049d5e
2.31.1