tty: use 64-bit timstamp
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>
This commit is contained in:
parent
fb7f1bf8d0
commit
c884f871fb
|
@ -814,9 +814,9 @@ void start_tty(struct tty_struct *tty)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(start_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
|
* We only care if the two values differ in anything other than the
|
||||||
|
@ -867,13 +867,8 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
|
||||||
i = -EIO;
|
i = -EIO;
|
||||||
tty_ldisc_deref(ld);
|
tty_ldisc_deref(ld);
|
||||||
|
|
||||||
if (i > 0) {
|
if (i > 0)
|
||||||
struct timespec ts;
|
tty_update_time(&inode->i_atime);
|
||||||
|
|
||||||
ts = timespec64_to_timespec(inode->i_atime);
|
|
||||||
tty_update_time(&ts);
|
|
||||||
inode->i_atime = timespec_to_timespec64(ts);
|
|
||||||
}
|
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -974,11 +969,7 @@ static inline ssize_t do_tty_write(
|
||||||
cond_resched();
|
cond_resched();
|
||||||
}
|
}
|
||||||
if (written) {
|
if (written) {
|
||||||
struct timespec ts;
|
tty_update_time(&file_inode(file)->i_mtime);
|
||||||
|
|
||||||
ts = timespec64_to_timespec(file_inode(file)->i_mtime);
|
|
||||||
tty_update_time(&ts);
|
|
||||||
file_inode(file)->i_mtime = timespec_to_timespec64(ts);
|
|
||||||
ret = written;
|
ret = written;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
|
|
Loading…
Reference in New Issue