[CRIU] [PATCH] page-pipe: Don't increase the page_pipe::nr_pipes if we reuse pipes
Cyrill Gorcunov
gorcunov at openvz.org
Tue May 6 07:57:01 PDT 2014
The page-pipe buffers may be reused once queued pages are
dumped, but we happen to increase page_pipe::nr_pipes
all the timer, regardless the fact where page buffer
came from.
In worst scenario this may lead to incorrect -EAGAIN returned
from page_pipe_grow forcing calling code to create new
pipes. This is not critical but should be fixed.
In other words page_pipe::nr_pipes must track _really_
created pipes.
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
page-pipe.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/page-pipe.c b/page-pipe.c
index e685ef9fd22f..1aa51313f407 100644
--- a/page-pipe.c
+++ b/page-pipe.c
@@ -34,6 +34,7 @@ static int page_pipe_grow(struct page_pipe *pp)
}
ppb->pipe_size = fcntl(ppb->p[0], F_GETPIPE_SZ, 0) / PAGE_SIZE;
+ pp->nr_pipes++;
list_add_tail(&ppb->l, &pp->bufs);
out:
@@ -41,8 +42,6 @@ out:
ppb->nr_segs = 0;
ppb->iov = &pp->iovs[pp->free_iov];
- pp->nr_pipes++;
-
return 0;
}
--
1.8.3.1
More information about the CRIU
mailing list