lkml.org 
[lkml]   [2005]   [Dec]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 12 of 20] ipath - misc driver support code
    From
    Date
    > +int ipath_get_upages_nocopy(unsigned long start_page, struct page **p)
    > +{
    > + int n;
    > + struct vm_area_struct *vm = NULL;
    > +
    > + down_read(&current->mm->mmap_sem);
    > + n = get_user_pages(current, current->mm, start_page, 1, 1, 1, p, &vm);
    > + up_read(&current->mm->mmap_sem);
    > + if (n != 1) {
    > + _IPATH_INFO("get_user_pages for 0x%lx failed with %d\n",
    > + start_page, n);
    > + if (n < 0) /* it's an errno */
    > + return n;
    > + /*
    > + * If we ever ask for more than a single page, we will have to
    > + * free the pages (if any) that we did get, via ipath_get_upages()
    > + * or put_page() directly.
    > + */
    > + return -ENOMEM; /* no way to know actual error */
    > + }
    > + vm->vm_flags |= VM_SHM | VM_LOCKED;
    > +
    > + return 0;
    > +}


    I hope you're not depending on the VM_LOCKED thing.. since the user can
    just undo that easily!

    (this is also why all this "sys_mlock from the driver" is traditionally
    buggy to the point of being a roothole, things like some of the binary
    3D drivers have had this security hole for a long time, as did some of
    the early infiniband drivers)

    -
    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: 2005-12-30 19:21    [W:0.023 / U:92.752 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site