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
rk: printk: add pm_emit_log_char
[firefly-linux-kernel-4.4.55.git]
/
kernel
/
sys.c
diff --git
a/kernel/sys.c
b/kernel/sys.c
index 61dfac580989a550124054bbc00e32642772ecc4..01f195e9607323ac1595e429917b8617fdb727a6 100644
(file)
--- a/
kernel/sys.c
+++ b/
kernel/sys.c
@@
-351,6
+351,7
@@
void kernel_restart(char *cmd)
restart_dbg("%s->%d->cmd=%s",__FUNCTION__,__LINE__,cmd);
kernel_restart_prepare(cmd);
restart_dbg("%s->%d->cmd=%s",__FUNCTION__,__LINE__,cmd);
kernel_restart_prepare(cmd);
+ disable_nonboot_cpus();
if (!cmd)
printk(KERN_EMERG "Restarting system.\n");
else
if (!cmd)
printk(KERN_EMERG "Restarting system.\n");
else
@@
-1163,15
+1164,16
@@
DECLARE_RWSEM(uts_sem);
* Work around broken programs that cannot handle "Linux 3.0".
* Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40
*/
* Work around broken programs that cannot handle "Linux 3.0".
* Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40
*/
-static int override_release(char __user *release,
in
t len)
+static int override_release(char __user *release,
size_
t len)
{
int ret = 0;
{
int ret = 0;
- char buf[65];
if (current->personality & UNAME26) {
if (current->personality & UNAME26) {
- char *rest = UTS_RELEASE;
+ const char *rest = UTS_RELEASE;
+ char buf[65] = { 0 };
int ndots = 0;
unsigned v;
int ndots = 0;
unsigned v;
+ size_t copy;
while (*rest) {
if (*rest == '.' && ++ndots >= 3)
while (*rest) {
if (*rest == '.' && ++ndots >= 3)
@@
-1181,8
+1183,9
@@
static int override_release(char __user *release, int len)
rest++;
}
v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40;
rest++;
}
v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40;
- snprintf(buf, len, "2.6.%u%s", v, rest);
- ret = copy_to_user(release, buf, len);
+ copy = clamp_t(size_t, len, 1, sizeof(buf));
+ copy = scnprintf(buf, copy, "2.6.%u%s", v, rest);
+ ret = copy_to_user(release, buf, copy + 1);
}
return ret;
}
}
return ret;
}