projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'v3.10/topic/arm64-hmp' into linux-linaro-lsk-v3.10
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
tty
/
tty_io.c
diff --git
a/drivers/tty/tty_io.c
b/drivers/tty/tty_io.c
index 3723c0ebb3161b6ae03560c44742a259de4f31eb..2967b6eb4c702ec9941927adf315da946237312c 100644
(file)
--- a/
drivers/tty/tty_io.c
+++ b/
drivers/tty/tty_io.c
@@
-992,8
+992,8
@@
EXPORT_SYMBOL(start_tty);
/* We limit tty time update visibility to every 8 seconds or so. */
static void tty_update_time(struct timespec *time)
{
/* We limit tty time update visibility to every 8 seconds or so. */
static void tty_update_time(struct timespec *time)
{
- unsigned long sec = get_seconds()
& ~7
;
- if (
(long)(sec - time->tv_sec) > 0
)
+ unsigned long sec = get_seconds();
+ if (
abs(sec - time->tv_sec) & ~7
)
time->tv_sec = sec;
}
time->tv_sec = sec;
}
@@
-1698,6
+1698,7
@@
int tty_release(struct inode *inode, struct file *filp)
int pty_master, tty_closing, o_tty_closing, do_sleep;
int idx;
char buf[64];
int pty_master, tty_closing, o_tty_closing, do_sleep;
int idx;
char buf[64];
+ long timeout = 0;
if (tty_paranoia_check(tty, inode, __func__))
return 0;
if (tty_paranoia_check(tty, inode, __func__))
return 0;
@@
-1782,7
+1783,11
@@
int tty_release(struct inode *inode, struct file *filp)
__func__, tty_name(tty, buf));
tty_unlock_pair(tty, o_tty);
mutex_unlock(&tty_mutex);
__func__, tty_name(tty, buf));
tty_unlock_pair(tty, o_tty);
mutex_unlock(&tty_mutex);
- schedule();
+ schedule_timeout_killable(timeout);
+ if (timeout < 120 * HZ)
+ timeout = 2 * timeout + 1;
+ else
+ timeout = MAX_SCHEDULE_TIMEOUT;
}
/*
}
/*