[CRIU] [PATCH] restore: die properly if restore_one_task fails
Tycho Andersen
tycho.andersen at canonical.com
Fri Aug 29 06:58:39 PDT 2014
On Fri, Aug 29, 2014 at 04:46:00PM +0400, Pavel Emelyanov wrote:
> On 08/28/2014 10:14 PM, Tycho Andersen wrote:
> > This is really just the last bit of c32046c9; if restore_one_task() fails, we
> > need to do the same futex wakeup we do everywhere else in this function.
> >
> > Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
> > ---
> > cr-restore.c | 5 ++++-
> > 1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/cr-restore.c b/cr-restore.c
> > index cefa78e..ec4b648 100644
> > --- a/cr-restore.c
> > +++ b/cr-restore.c
> > @@ -1467,7 +1467,10 @@ static int restore_task_with_children(void *_arg)
> > if (current->parent == NULL && fini_mnt_ns())
> > goto err_fini_mnt;
> >
> > - return restore_one_task(current->pid.virt, ca->core);
> > + if (restore_one_task(current->pid.virt, ca->core))
> > + goto err_fini_mnt;
>
> The fini_mnt, that will be called on err_fini_mnt laber, is called one
> function above. Shouldn't this be "goto err" instead?
Yes. The one above it should probably not be err_fini_mnt either for
that matter, since that's what just failed.
Tycho
This is really just the last bit of c32046c9; if restore_one_task() fails, we
need to do the same futex wakeup we do everywhere else in this function.
v2: use err instead of err_fini_mnt after mount has been finalized normally
Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
Acked-by: Acked-by: Andrew Vagin <avagin at parallels.com>
---
cr-restore.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/cr-restore.c b/cr-restore.c
index cefa78e..2735d0d 100644
--- a/cr-restore.c
+++ b/cr-restore.c
@@ -1465,9 +1465,12 @@ static int restore_task_with_children(void *_arg)
goto err_fini_mnt;
if (current->parent == NULL && fini_mnt_ns())
- goto err_fini_mnt;
+ goto err;
- return restore_one_task(current->pid.virt, ca->core);
+ if (restore_one_task(current->pid.virt, ca->core))
+ goto err;
+
+ return 0;
err_fini_mnt:
if (current->parent == NULL)
--
1.9.1
More information about the CRIU
mailing list