[FOR STABLE] ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets

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

 



The upstream commit:

    1bd8d6cd3e41: ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets

has not landed in 4.9 yet, probably because it only recently hit
upstream (during the 4.14 merge window).  The upstream commit will
automatically apply for 4.9 and newer kernels.  However, it will not
cherry pick cleanly into the 3.18, 4.1, and 4.4 kernels.  For the
stable kernels will need this adjusted backport.

					- Ted

>From 7fa8b8b96e69f1ad1b2eb2ee107275e2d38a8769 Mon Sep 17 00:00:00 2001
From: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx>
Date: Thu, 24 Aug 2017 13:22:06 -0400
Subject: [PATCH] ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets

[ Upstream commit 1bd8d6cd3e413d64e543ec3e69ff43e75a1cf1ea ]

In the ext4 implementations of SEEK_HOLE and SEEK_DATA, make sure we
return -ENXIO for negative offsets instead of banging around inside
the extent code and returning -EFSCORRUPTED.

Reported-by: Mateusz S <muttdini@xxxxxxxxx>
Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx # 3.18
---
 fs/ext4/file.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 45ef9975caec..a8b1749d79a8 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -559,7 +559,7 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize)
 	mutex_lock(&inode->i_mutex);
 
 	isize = i_size_read(inode);
-	if (offset >= isize) {
+	if (offset < 0 || offset >= isize) {
 		mutex_unlock(&inode->i_mutex);
 		return -ENXIO;
 	}
@@ -632,7 +632,7 @@ static loff_t ext4_seek_hole(struct file *file, loff_t offset, loff_t maxsize)
 	mutex_lock(&inode->i_mutex);
 
 	isize = i_size_read(inode);
-	if (offset >= isize) {
+	if (offset < 0 || offset >= isize) {
 		mutex_unlock(&inode->i_mutex);
 		return -ENXIO;
 	}
-- 
2.11.0.rc0.7.gbe5a750




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]