[packages/kernel] - don't wrap fix for xfs getnextquota

arekm arekm at pld-linux.org
Sat Dec 17 12:42:00 CET 2016


commit 08da2677436e6020110a53b4c0698650ebe7b59d
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Dec 17 12:34:23 2016 +0100

    - don't wrap fix for xfs getnextquota

 kernel-small_fixes.patch | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
---
diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch
index 28517b8..b615734 100644
--- a/kernel-small_fixes.patch
+++ b/kernel-small_fixes.patch
@@ -27,3 +27,40 @@
  			fi
  		done
 
+From:   Eric Sandeen <sandeen at redhat.com>
+Subject: [PATCH] xfs: don't wrap ID in xfs_dq_get_next_id
+Message-ID: <f52de68d-abe6-1960-c0ef-1d199346f689 at redhat.com>
+Date:   Fri, 16 Dec 2016 18:05:20 -0600
+
+The GETNEXTQOTA ioctl takes whatever ID is sent in,
+and looks for the next active quota for an user
+equal or higher to that ID.
+
+But if we are at the maximum ID and then ask for the "next"
+one, we may wrap back to zero.  In this case, userspace
+may loop forever, because it will start querying again
+at zero.
+
+We'll fix this in userspace as well, but for the kernel,
+return -ENOENT if we ask for the next quota ID
+past UINT_MAX so the caller knows to stop.
+
+Signed-off-by: Eric Sandeen <sandeen at redhat.com>
+---
+
+diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c
+index 7a30b8f..dbeddd9 100644
+--- a/fs/xfs/xfs_dquot.c
++++ b/fs/xfs/xfs_dquot.c
+@@ -710,6 +710,10 @@
+ 	/* Simple advance */
+ 	next_id = *id + 1;
+ 
++	/* If we'd wrap past the max ID, stop */
++	if (next_id < *id)
++		return -ENOENT;
++
+ 	/* If new ID is within the current chunk, advancing it sufficed */
+ 	if (next_id % mp->m_quotainfo->qi_dqperchunk) {
+ 		*id = next_id;
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/08da2677436e6020110a53b4c0698650ebe7b59d



More information about the pld-cvs-commit mailing list