arm64: do not enforce strict 16 byte alignment to stack pointer
copy_thread should not be enforcing 16 byte aligment and returning -EINVAL. Other architectures trap misaligned stack access with SIGBUS so arm64 should follow this convention, so remove the strict enforcement check. For example, currently clone(2) fails with -EINVAL when passing a misaligned stack and this gives little clue to what is wrong. Instead, it is arguable that a SIGBUS on the fist access to a misaligned stack allows one to figure out that it is a misaligned stack issue rather than trying to figure out why an unconventional (and undocumented) -EINVAL is being returned. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
61462c8a6b
commit
e6d9a52543
|
@ -265,9 +265,6 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start,
|
|||
if (stack_start) {
|
||||
if (is_compat_thread(task_thread_info(p)))
|
||||
childregs->compat_sp = stack_start;
|
||||
/* 16-byte aligned stack mandatory on AArch64 */
|
||||
else if (stack_start & 15)
|
||||
return -EINVAL;
|
||||
else
|
||||
childregs->sp = stack_start;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue