epoll: add syscall epoll_pwait2
[linux-2.6-microblaze.git] / fs / exec.c
index 81b85f7..5d4d520 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -757,8 +757,8 @@ int setup_arg_pages(struct linux_binprm *bprm,
 #ifdef CONFIG_STACK_GROWSUP
        /* Limit stack size */
        stack_base = bprm->rlim_stack.rlim_max;
-       if (stack_base > STACK_SIZE_MAX)
-               stack_base = STACK_SIZE_MAX;
+
+       stack_base = calc_max_stack_size(stack_base);
 
        /* Add space for stack randomization. */
        stack_base += (STACK_RND_MASK << PAGE_SHIFT);
@@ -966,8 +966,8 @@ EXPORT_SYMBOL(read_code);
 
 /*
  * Maps the mm_struct mm into the current task struct.
- * On success, this function returns with the mutex
- * exec_update_mutex locked.
+ * On success, this function returns with exec_update_lock
+ * held for writing.
  */
 static int exec_mmap(struct mm_struct *mm)
 {
@@ -982,7 +982,7 @@ static int exec_mmap(struct mm_struct *mm)
        if (old_mm)
                sync_mm_rss(old_mm);
 
-       ret = mutex_lock_killable(&tsk->signal->exec_update_mutex);
+       ret = down_write_killable(&tsk->signal->exec_update_lock);
        if (ret)
                return ret;
 
@@ -996,7 +996,7 @@ static int exec_mmap(struct mm_struct *mm)
                mmap_read_lock(old_mm);
                if (unlikely(old_mm->core_state)) {
                        mmap_read_unlock(old_mm);
-                       mutex_unlock(&tsk->signal->exec_update_mutex);
+                       up_write(&tsk->signal->exec_update_lock);
                        return -EINTR;
                }
        }
@@ -1395,7 +1395,7 @@ int begin_new_exec(struct linux_binprm * bprm)
        return 0;
 
 out_unlock:
-       mutex_unlock(&me->signal->exec_update_mutex);
+       up_write(&me->signal->exec_update_lock);
 out:
        return retval;
 }
@@ -1436,7 +1436,7 @@ void setup_new_exec(struct linux_binprm * bprm)
         * some architectures like powerpc
         */
        me->mm->task_size = TASK_SIZE;
-       mutex_unlock(&me->signal->exec_update_mutex);
+       up_write(&me->signal->exec_update_lock);
        mutex_unlock(&me->signal->cred_guard_mutex);
 }
 EXPORT_SYMBOL(setup_new_exec);