[PATCH] Prevent mmap command to map beyond EOF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Attempting to access a mmapp'ed region that does not correspond to the
file results in a SIGBUS, so prevent xfs_io to even attempt to mmap() a
region beyond EOF.

Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx>
---

There is a caveat about this patch though. It is possible to mmap() a
non-existent file region, extent the file to go beyond such region, and run
operations in this mmapped region without such operations triggering a SIGBUS
(excluding the file corruption factor here :). So, I'm not quite sure if it
would be ok to check for this in mmap_f() as this patch does, or create a helper
to check for such condition, and use it on the other operations (mread_f,
mwrite_f, etc). What you folks think?


 io/mmap.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/io/mmap.c b/io/mmap.c
index 9816cf68..77c5f2b6 100644
--- a/io/mmap.c
+++ b/io/mmap.c
@@ -242,6 +242,13 @@ mmap_f(
 		return 0;
 	}
 
+	/* Check if we are mmapping beyond EOF */
+	if ((offset + length) > filesize()) {
+		printf(_("Attempting to mmap() beyond EOF\n"));
+		exitcode = 1;
+		return 0;
+	}
+
 	/*
 	 * mmap and munmap memory area of length2 region is helpful to
 	 * make a region of extendible free memory. It's generally used
-- 
2.31.1




[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux