Serge E. Hallyn wrote: > Ony seems useful if you're using coda or hppfs, but go ahead and ^^^ (It is also used in some place under net/*...) > restore a file's f_cred. This is set to the cred of the task doing > the open, so often it will be the same as that of the restarted task. > > Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx> > --- > checkpoint/files.c | 16 ++++++++++++++-- > include/linux/checkpoint_hdr.h | 1 + > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/checkpoint/files.c b/checkpoint/files.c > index 6107361..edf81ce 100644 > --- a/checkpoint/files.c > +++ b/checkpoint/files.c > @@ -151,7 +151,11 @@ int checkpoint_file_common(struct ckpt_ctx *ctx, struct file *file, > h->f_pos = file->f_pos; > h->f_version = file->f_version; > > - /* FIX: need also file->uid, file->gid, file->f_owner, etc */ > + h->f_credref = checkpoint_obj(ctx, file->f_cred, CKPT_OBJ_CRED); > + if (h->f_credref < 0) > + return h->f_credref; > + > + /* FIX: need also file->f_owner, etc */ > > return 0; > } > @@ -359,8 +363,16 @@ int restore_file_common(struct ckpt_ctx *ctx, struct file *file, > struct ckpt_hdr_file *h) > { > int ret; > + struct cred *cred; > + > + /* FIX: need to restore owner etc */ > > - /* FIX: need to restore uid, gid, owner etc */ > + /* restore the cred */ > + cred = ckpt_obj_fetch(ctx, h->f_credref, CKPT_OBJ_CRED); > + if (IS_ERR(cred)) > + return PTR_ERR(cred); > + put_cred(file->f_cred); > + file->f_cred = get_cred(cred); > > /* safe to set 1st arg (fd) to 0, as command is F_SETFL */ > ret = vfs_fcntl(0, F_SETFL, h->f_flags & CKPT_SETFL_MASK, file); > diff --git a/include/linux/checkpoint_hdr.h b/include/linux/checkpoint_hdr.h > index 98fc0f7..2693a72 100644 > --- a/include/linux/checkpoint_hdr.h > +++ b/include/linux/checkpoint_hdr.h > @@ -341,6 +341,7 @@ struct ckpt_hdr_file { > __u32 _padding; > __u64 f_pos; > __u64 f_version; > + __s32 f_credref; This can replace the unused _padding field above ? > } __attribute__((aligned(8))); > > struct ckpt_hdr_file_generic { Acked-by: Oren Laadan <orenl@xxxxxxxxxxxxxxx> _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers