lkml.org 
[lkml]   [2009]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC v17][PATCH 22/60] c/r: external checkpoint of a task other than ourself


    Serge E. Hallyn wrote:
    > Quoting Oren Laadan (orenl@librato.com):
    >> +/* setup checkpoint-specific parts of ctx */
    >> +static int init_checkpoint_ctx(struct ckpt_ctx *ctx, pid_t pid)
    >> +{
    >> + struct task_struct *task;
    >> + struct nsproxy *nsproxy;
    >> + int ret;
    >> +
    >> + /*
    >> + * No need for explicit cleanup here, because if an error
    >> + * occurs then ckpt_ctx_free() is eventually called.
    >> + */
    >> +
    >> + ctx->root_pid = pid;
    >> +
    >> + /* root task */
    >> + read_lock(&tasklist_lock);
    >> + task = find_task_by_vpid(pid);
    >> + if (task)
    >> + get_task_struct(task);
    >> + read_unlock(&tasklist_lock);
    >> + if (!task)
    >> + return -ESRCH;
    >> + else
    >> + ctx->root_task = task;
    >> +
    >> + /* root nsproxy */
    >> + rcu_read_lock();
    >> + nsproxy = task_nsproxy(task);
    >> + if (nsproxy)
    >> + get_nsproxy(nsproxy);
    >> + rcu_read_unlock();
    >> + if (!nsproxy)
    >> + return -ESRCH;
    >> + else
    >> + ctx->root_nsproxy = nsproxy;
    >> +
    >> + /* root freezer */
    >> + ctx->root_freezer = task;
    >> + geT_task_struct(task);
    >> +
    >> + ret = may_checkpoint_task(ctx, task);
    >> + if (ret) {
    >> + ckpt_write_err(ctx, NULL);
    >> + put_task_struct(task);
    >> + put_task_struct(task);
    >> + put_nsproxy(nsproxy);
    >
    > I don't think this is safe - the ckpt_ctx_free() will
    > free them a second time because you're not setting them
    > to NULL, right?

    Yes. Fortunately this hole chunk is removed by the 3rd-next patch.
    I'll make sure it's correct here too.

    Thanks,

    Oren.



    \
     
     \ /
      Last update: 2009-07-23 17:45    [W:0.023 / U:128.328 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site