lkml.org 
[lkml]   [2009]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/9] exec_path 1/9: introduce ->exec_path and switch /proc/*/exe
    On Fri, Jun 05, 2009 at 08:49:56AM -0700, Linus Torvalds wrote:
    >
    >
    > On Fri, 5 Jun 2009, Alexey Dobriyan wrote:
    > >
    > > This mapping issue is what created VM_EXECUTABLE/MAP_EXECUTABLE in
    > > the first place, I assume? Never mind it's cheap hack.
    > >
    > > > and goes along with task->mm, and should be there, not in task_struct.
    > >
    > > Because ->mm can be borrowed to unrelated task and user has to check
    > > for it.
    >
    > Not it can't.
    >
    > You're confusing ->mm with ->active_mm.
    >
    > The latter can be borrowed. The former can not.

    Not permanently, but it can:

    static void aio_kick_handler(struct work_struct *work)
    {
    struct kioctx *ctx = container_of(work, struct kioctx, wq.work);
    mm_segment_t oldfs = get_fs();
    struct mm_struct *mm;
    int requeue;

    set_fs(USER_DS);
    use_mm(ctx->mm);
    spin_lock_irq(&ctx->ctx_lock);
    requeue =__aio_run_iocbs(ctx);
    mm = ctx->mm;
    spin_unlock_irq(&ctx->ctx_lock);
    unuse_mm(mm);
    set_fs(oldfs);
    /*
    * we're in a worker thread already, don't use
    * queue_delayed_work,
    */
    if (requeue)
    queue_delayed_work(aio_wq, &ctx->wq, 0);
    }

    It's borrowed by kernel thread of course, not userspace task.

    > The fact is, the executable is _inherently_ tied to the mm. It's what it
    > is mapped into. It makes no sense to tie it to anything else. It's simply
    > fundamentally not a "per-thread" thing.


    \
     
     \ /
      Last update: 2009-06-05 18:13    [W:0.031 / U:0.104 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site