[lkml]   [2010]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch v3 2/2] ptrace: Add support for generic PTRACE_GETREGSET/PTRACE_SETREGSET
    Note that this patch and the xstate user_regset patch are entirely independent.
    They can me merged in any order or one without the other.

    > +/*
    > + * Generic ptrace interface that exports the architecture specific regsets
    > + * using the corresponding NT_* types (which are also used in the core dump).

    There is a special case here, which I think already works as we intend it
    to, but which should be clarified in the comment about this API. The
    NT_PRSTATUS note type in a core dump contains a full 'struct elf_prstatus'.
    But the user_regset for NT_PRSTATUS contains just the elf_gregset_t that
    is the pr_reg field of 'struct elf_prstatus'.

    For all the other user_regset flavors, the user_regset layout and the ELF
    core dump note payload are exactly the same layout, as your comment implies.

    > +static int ptrace_regset(struct task_struct *task, int req, unsigned int type,
    > + struct iovec *kiov)
    > +{
    > + const struct user_regset_view *view = task_user_regset_view(task);
    > + const struct user_regset *regset = find_regset(view, type);
    > + int regset_no;
    > +
    > + if (!regset || (kiov->iov_len % regset->size) != 0)
    > + return -EIO;

    My inclination would be to diagnose these more specifically. For a bad
    size, give -EINVAL. For an unknown regset type, give maybe -EINVAL or
    maybe -ENODEV. (-ENODEV is what you get for a known NT_* type that has a
    user_regset implemented in the kernel, but that the particular hardware
    we're running on doesn't support. So perhaps you don't want to overload
    that for a wholly unrecognized NT_* type.)

    Otherwise, looks good to me. ACK contingent on Oleg's ACK.


     \ /
      Last update: 2010-02-12 04:59    [W:0.022 / U:18.628 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site