Skip to content

Commit

Permalink
tty: use 64-bit timstamp
Browse files Browse the repository at this point in the history
The automated VFS conversion to timespec64 has left one caller of
the deprecated get_seconds() function in the tty driver, this cleans
it up to call ktime_get_real_seconds() instead, fixing the possible
overflow.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Arnd Bergmann authored and Greg Kroah-Hartman committed Jun 28, 2018
1 parent fb7f1bf commit c884f87
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions drivers/tty/tty_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -814,9 +814,9 @@ void start_tty(struct tty_struct *tty)
}
EXPORT_SYMBOL(start_tty);

static void tty_update_time(struct timespec *time)
static void tty_update_time(struct timespec64 *time)
{
unsigned long sec = get_seconds();
time64_t sec = ktime_get_real_seconds();

/*
* We only care if the two values differ in anything other than the
Expand Down Expand Up @@ -867,13 +867,8 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
i = -EIO;
tty_ldisc_deref(ld);

if (i > 0) {
struct timespec ts;

ts = timespec64_to_timespec(inode->i_atime);
tty_update_time(&ts);
inode->i_atime = timespec_to_timespec64(ts);
}
if (i > 0)
tty_update_time(&inode->i_atime);

return i;
}
Expand Down Expand Up @@ -974,11 +969,7 @@ static inline ssize_t do_tty_write(
cond_resched();
}
if (written) {
struct timespec ts;

ts = timespec64_to_timespec(file_inode(file)->i_mtime);
tty_update_time(&ts);
file_inode(file)->i_mtime = timespec_to_timespec64(ts);
tty_update_time(&file_inode(file)->i_mtime);
ret = written;
}
out:
Expand Down

0 comments on commit c884f87

Please sign in to comment.