[PATCH] fork: stack direction

From: Christian Brauner
Date: Tue Oct 29 2019 - 08:55:39 EST


Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx>
---
kernel/fork.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/kernel/fork.c b/kernel/fork.c
index bcdf53125210..22dc72071a6d 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -2584,6 +2584,13 @@ static bool clone3_args_valid(const struct kernel_clone_args *kargs)
return true;
}

+static inline void clone3_prepare_stack(struct kernel_clone_args *kargs)
+{
+#if !defined(CONFIG_STACK_GROWSUP) && !defined(CONFIG_IA64)
+ kargs->stack += kargs->stack_size;
+#endif
+}
+
/**
* clone3 - create a new process with specific properties
* @uargs: argument structure
@@ -2605,6 +2612,8 @@ SYSCALL_DEFINE2(clone3, struct clone_args __user *, uargs, size_t, size)
if (err)
return err;

+ clone3_prepare_stack(&kargs);
+
if (!clone3_args_valid(&kargs))
return -EINVAL;

--
2.23.0