From: Jeff Mahoney Date: Fri, 2 Jun 2017 14:15:41 -0400 Subject: fsr: fix uninitialized fs usage after timeout Patch-mainline: Submitted to linux-xfs, 2 Jun 2017 References: bsc#1002699 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 --- fsr/xfs_fsr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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)); }