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
ARM64: DTS: Add rk3399-firefly uart4 device, node as /dev/ttyS1
[firefly-linux-kernel-4.4.55.git]
/
kernel
/
sys.c
diff --git
a/kernel/sys.c
b/kernel/sys.c
index 11333311cf1c5da8aab5c1eaceaaaee671468676..ba3ddb43dd9fe4cca48544ae127702a424adacbb 100644
(file)
--- a/
kernel/sys.c
+++ b/
kernel/sys.c
@@
-1855,11
+1855,13
@@
static int prctl_set_mm_map(int opt, const void __user *addr, unsigned long data
user_auxv[AT_VECTOR_SIZE - 1] = AT_NULL;
}
user_auxv[AT_VECTOR_SIZE - 1] = AT_NULL;
}
- if (prctl_map.exe_fd != (u32)-1)
+ if (prctl_map.exe_fd != (u32)-1)
{
error = prctl_set_mm_exe_file(mm, prctl_map.exe_fd);
error = prctl_set_mm_exe_file(mm, prctl_map.exe_fd);
- down_read(&mm->mmap_sem);
- if (error)
- goto out;
+ if (error)
+ return error;
+ }
+
+ down_write(&mm->mmap_sem);
/*
* We don't validate if these members are pointing to
/*
* We don't validate if these members are pointing to
@@
-1896,10
+1898,8
@@
static int prctl_set_mm_map(int opt, const void __user *addr, unsigned long data
if (prctl_map.auxv_size)
memcpy(mm->saved_auxv, user_auxv, sizeof(user_auxv));
if (prctl_map.auxv_size)
memcpy(mm->saved_auxv, user_auxv, sizeof(user_auxv));
- error = 0;
-out:
- up_read(&mm->mmap_sem);
- return error;
+ up_write(&mm->mmap_sem);
+ return 0;
}
#endif /* CONFIG_CHECKPOINT_RESTORE */
}
#endif /* CONFIG_CHECKPOINT_RESTORE */
@@
-1965,7
+1965,7
@@
static int prctl_set_mm(int opt, unsigned long addr,
error = -EINVAL;
error = -EINVAL;
- down_
read
(&mm->mmap_sem);
+ down_
write
(&mm->mmap_sem);
vma = find_vma(mm, addr);
prctl_map.start_code = mm->start_code;
vma = find_vma(mm, addr);
prctl_map.start_code = mm->start_code;
@@
-2058,7
+2058,7
@@
static int prctl_set_mm(int opt, unsigned long addr,
error = 0;
out:
error = 0;
out:
- up_
read
(&mm->mmap_sem);
+ up_
write
(&mm->mmap_sem);
return error;
}
return error;
}
@@
-2319,7
+2319,10
@@
SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
error = perf_event_task_enable();
break;
case PR_GET_TIMERSLACK:
error = perf_event_task_enable();
break;
case PR_GET_TIMERSLACK:
- error = current->timer_slack_ns;
+ if (current->timer_slack_ns > ULONG_MAX)
+ error = ULONG_MAX;
+ else
+ error = current->timer_slack_ns;
break;
case PR_SET_TIMERSLACK:
if (arg2 <= 0)
break;
case PR_SET_TIMERSLACK:
if (arg2 <= 0)