lkml.org 
[lkml]   [2019]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: For review: documentation of clone3() system call
    On Tue, Oct 29, 2019 at 03:36:37PM +0100, Florian Weimer wrote:
    > * Christian Brauner:
    >
    > > @Florian, do you have an opinion about always passing the stack from the
    > > lowest address with clone3()?
    >
    > Do you mean that the stack extends from stack to stack_size? I guess

    Specifically, that userspace doesn't need to know whether it needs to
    pass stack or stack + stack_size. The kernel will just do the stack + stack_size
    if the architecture has a downwards growing stack. So for _all_
    architectures, ia64 or not, you'd always pass:

    void *p[PAGE_SIZE];

    struct clone_args args = {
    .stack = p,
    .stack_size = PAGE_SIZE,
    };


    > that makes sense. What about architectures which need two stacks (I
    > think ia64 is one)?

    I don't think ia64 needs any special treament. ia64 requires you to pass
    the lowest address of the stack and the kernel does the additon to reach
    the top of the stack and the alignemnt too. So ia64 _in the kernel_
    currently does:

    arch/ia64/kernel/entry.S:sys_clone2()
    - setup stack and stack size and call into do_fork()
    -> kernel/fork.c:do_fork()
    -> copy_thread_tls()
    -> arch/ia64/kernel/process.c:copy_thread():

    if (user_stack_base) {
    child_ptregs->r12 = user_stack_base + user_stack_size - 16;
    child_ptregs->ar_bspstore = user_stack_base;
    child_ptregs->ar_rnat = 0;
    child_ptregs->loadrs = 0;
    }

    > There is also the matter whose responsibility is the alignment of the
    > initial stack pointer.

    Hm, probably also a detail that userspace shouldn't need to know
    about?

    Christian

    \
     
     \ /
      Last update: 2019-10-29 17:05    [W:2.084 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site