Quoting Oren Laadan (orenl@xxxxxxxxxxxxxxx): > > @@ -1246,9 +1244,7 @@ int restore_mm_obj(struct ckpt_ctx *ctx, int mm_objref) > > int ret; > > > > mm = ckpt_obj_fetch(ctx, mm_objref, CKPT_OBJ_MM); > > - if (!mm) > > - return -EINVAL; > > - else if (IS_ERR(mm)) > > + if (IS_ERR(mm)) > > return -EINVAL; > ^^^^^^ > should be: PTR_ERR(mm); Oops, right. > > diff --git a/fs/pipe.c b/fs/pipe.c > > index ab2de3c..b284dcb 100644 > > --- a/fs/pipe.c > > +++ b/fs/pipe.c > > @@ -982,14 +982,12 @@ struct file *pipe_file_restore(struct ckpt_ctx *ctx, struct ckpt_hdr_file *ptr) > > return ERR_PTR(-EINVAL); > > > > file = ckpt_obj_fetch(ctx, h->pipe_objref, CKPT_OBJ_FILE); > > - if (IS_ERR(file)) > > - return file; > > /* > > - * If ckpt_obj_fetch() returned NULL, then this is the first > > + * If ckpt_obj_fetch() returned -EINVAL, then this is the first > > * time we see this pipe so need to restore the contents. > > * Otherwise, use the file pointer skip forward. > > */ > > - if (!file) { > > + if (PTR_ERR(file) == -EINVAL) { > > ckpt_obj_fetch() will also fail with -EINVAL if the type of the object > found doesn't match the type that was requested. Hence why originally > the two return values. So I changed that latter to report -ENOMSG (that > is: /* No message of desired type */) Hmm, yes I was thinking of the checkpoint case where mismatched types would be strictly an objhash bug. You're right, this case can just be a bad checkpoint image! thanks, -serge _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers