diff mbox

fsr: fix uninitialized fs usage after timeout

Message ID b4921f6d-01c7-09eb-641f-47f1be998e61@suse.com (mailing list archive)
State Superseded
Headers show

Commit Message

Jeff Mahoney June 2, 2017, 6:20 p.m. UTC
In the main loop of fsrallfs, we exit when we've hit the timeout but
we increment fs before we get there.  If we're operating on the last
file system in the array, we'll hit an uninitialized fsdesc and
crash in fsrall_cleanup.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
---
 fsr/xfs_fsr.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
diff mbox

Patch

diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c
index 517b75f0..e695c243 100644
--- a/fsr/xfs_fsr.c
+++ b/fsr/xfs_fsr.c
@@ -598,7 +598,7 @@  fsrallfs(char *mtab, int howlong, char *leftofffile)
 	signal(SIGTERM, aborter);

 	/* reorg for 'howlong' -- checked in 'fsrfs' */
-	while (endtime > time(0)) {
+	for (; endtime > time(0); fs->npass++, fs++) {
 		pid_t pid;
 		if (fs == fsend)
 			fs = fsbase;
@@ -629,8 +629,6 @@  fsrallfs(char *mtab, int howlong, char *leftofffile)
 			break;
 		}
 		startino = 0;  /* reset after the first time through */
-		fs->npass++;
-		fs++;
 	}
 	fsrall_cleanup(endtime <= time(0));
 }