Skip to content

Commit

Permalink
e2fsck, tune2fs: fix post-2038 support for s_lastcheck
Browse files Browse the repository at this point in the history
This changes were missed in commit ca8bc92 ("Add post-2038
timestamp support to e2fsprogs").

Addresses-Coverity-Bug: 1531832
Signed-off-by: Theodore Ts'o <[email protected]>
  • Loading branch information
tytso committed Apr 24, 2024
1 parent ec1c87f commit f5f0377
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
11 changes: 7 additions & 4 deletions e2fsck/unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ static int is_on_batt(void)
static void check_if_skip(e2fsck_t ctx)
{
ext2_filsys fs = ctx->fs;
struct ext2_super_block *sb = fs->super;
struct problem_context pctx;
const char *reason = NULL;
unsigned int reason_arg = 0;
Expand Down Expand Up @@ -370,7 +371,7 @@ static void check_if_skip(e2fsck_t ctx)
if (ctx->options & E2F_OPT_JOURNAL_ONLY)
goto skip;

lastcheck = fs->super->s_lastcheck;
lastcheck = ext2fs_get_tstamp(sb, s_lastcheck);
if (lastcheck > ctx->now)
lastcheck -= ctx->time_fudge;
if ((fs->super->s_state & EXT2_ERROR_FS) ||
Expand All @@ -397,8 +398,9 @@ static void check_if_skip(e2fsck_t ctx)
((ctx->now - lastcheck) >=
((time_t) fs->super->s_checkinterval))) {
reason = _(" has gone %u days without being checked");
reason_arg = (ctx->now - fs->super->s_lastcheck)/(3600*24);
if (batt && ((ctx->now - fs->super->s_lastcheck) <
reason_arg = (ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) /
(3600*24);
if (batt && ((ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) <
fs->super->s_checkinterval*2))
reason = 0;
} else if (broken_system_clock && fs->super->s_checkinterval) {
Expand Down Expand Up @@ -457,7 +459,8 @@ static void check_if_skip(e2fsck_t ctx)
next_check = 1;
}
if (!broken_system_clock && fs->super->s_checkinterval &&
((ctx->now - fs->super->s_lastcheck) >= fs->super->s_checkinterval))
((ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) >=
fs->super->s_checkinterval))
next_check = 1;
if (next_check <= 5) {
if (next_check == 1) {
Expand Down
2 changes: 1 addition & 1 deletion misc/tune2fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -3445,7 +3445,7 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
goto closefs;
}
if (T_flag) {
sb->s_lastcheck = last_check_time;
ext2fs_set_tstamp(sb, s_lastcheck, last_check_time);
ext2fs_mark_super_dirty(fs);
printf(_("Setting time filesystem last checked to %s\n"),
ctime(&last_check_time));
Expand Down

0 comments on commit f5f0377

Please sign in to comment.