lkml.org 
[lkml]   [2007]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 05/11] syslets: core code
    On Tue, Feb 13, 2007 at 11:24:43PM +0100, Ingo Molnar wrote:
    > > > + memset(atom->args, 0, sizeof(atom->args));
    > > > +
    > > > + ret |= __get_user(arg_ptr, &uatom->arg_ptr[0]);
    > > > + if (!arg_ptr)
    > > > + return ret;
    > > > + if (!access_ok(VERIFY_WRITE, arg_ptr, sizeof(*arg_ptr)))
    > > > + return -EFAULT;
    > >
    > > It's a little unclear why you do that many individual access_ok()s.
    > > And why is the target constant sized anyways?
    >
    > each indirect pointer has to be checked separately, before dereferencing
    > it. (Andrew pointed out that they should be VERIFY_READ, i fixed that in
    > my tree)

    But why only constant sized? It could be a variable length object, couldn't it?

    If it's an array it could be all checked together

    (i must be missing something here)

    > > If it's only a few pages you don't need any resource accounting. If
    > > it's more then it's nasty to steal the users quota. I think plain
    > > gup() would be better.
    >
    > get_user_pages() would have to be limited in some way - and i didnt want

    If you only use it for a small ring buffer it is naturally limited.

    Also beancounter will fix that eventually.

    > a single page is enough for 1024 completion pointers - that's more than
    > enough for most purposes - and the default mlock limit is 40K.

    Then limit it to a single page and use gup

    -Andi
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-02-13 23:33    [W:5.552 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site