diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index c0a58be780a4..fba0f29401ea 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -174,10 +174,10 @@ SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval) | |||
| 174 | 174 | ||
| 175 | /* normalize: avoid signed division (rounding problems) */ | 175 | /* normalize: avoid signed division (rounding problems) */ |
| 176 | error = -ESRCH; | 176 | error = -ESRCH; |
| 177 | if (niceval < -20) | 177 | if (niceval < MIN_NICE) |
| 178 | niceval = -20; | 178 | niceval = MIN_NICE; |
| 179 | if (niceval > 19) | 179 | if (niceval > MAX_NICE) |
| 180 | niceval = 19; | 180 | niceval = MAX_NICE; |
| 181 | 181 | ||
| 182 | rcu_read_lock(); | 182 | rcu_read_lock(); |
| 183 | read_lock(&tasklist_lock); | 183 | read_lock(&tasklist_lock); |
| @@ -1996,6 +1996,21 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, | |||
| 1996 | if (arg2 || arg3 || arg4 || arg5) | 1996 | if (arg2 || arg3 || arg4 || arg5) |
| 1997 | return -EINVAL; | 1997 | return -EINVAL; |
| 1998 | return current->no_new_privs ? 1 : 0; | 1998 | return current->no_new_privs ? 1 : 0; |
| 1999 | case PR_GET_THP_DISABLE: | ||
| 2000 | if (arg2 || arg3 || arg4 || arg5) | ||
| 2001 | return -EINVAL; | ||
| 2002 | error = !!(me->mm->def_flags & VM_NOHUGEPAGE); | ||
| 2003 | break; | ||
| 2004 | case PR_SET_THP_DISABLE: | ||
| 2005 | if (arg3 || arg4 || arg5) | ||
| 2006 | return -EINVAL; | ||
| 2007 | down_write(&me->mm->mmap_sem); | ||
| 2008 | if (arg2) | ||
| 2009 | me->mm->def_flags |= VM_NOHUGEPAGE; | ||
| 2010 | else | ||
| 2011 | me->mm->def_flags &= ~VM_NOHUGEPAGE; | ||
| 2012 | up_write(&me->mm->mmap_sem); | ||
| 2013 | break; | ||
| 1999 | default: | 2014 | default: |
| 2000 | error = -EINVAL; | 2015 | error = -EINVAL; |
| 2001 | break; | 2016 | break; |
