[CRIU] [PATCH] Fixed negative returns issues introduced by remote images code.
Rodrigo Bruno
rbruno at gsd.inesc-id.pt
Wed Mar 1 06:05:22 PST 2017
Hi,
2017-02-28 23:25 GMT+00:00 Andrei Vagin <avagin at virtuozzo.com>:
> On Wed, Mar 01, 2017 at 04:32:50AM +0100, rbruno at gsd.inesc-id.pt wrote:
> > Hi Andrei,
> >
> > here goes a patch to fix the negative returns issue.
> >
> > Let me know if you prefer to receive this in another format. If you see
> > any problem with the resolution of the problem, let me know.
> >
> > ---
> > criu/fdstore.c | 5 +++++
> > criu/files-reg.c | 6 +++++-
> > criu/image.c | 11 +++++++++--
> > criu/img-remote-proto.c | 2 +-
> > criu/img-remote.c | 5 +++++
> > 5 files changed, 25 insertions(+), 4 deletions(-)
> >
> > diff --git a/criu/fdstore.c b/criu/fdstore.c
> > index d9bed4d..bddd2ab 100644
> > --- a/criu/fdstore.c
> > +++ b/criu/fdstore.c
> > @@ -100,6 +100,11 @@ int fdstore_get(int id)
> > int sk = get_service_fd(FDSTORE_SK_OFF);
> > int fd;
> >
> > + if (sk < 0) {
> > + pr_err("Unable get service fd");
> > + return -1;
> > + }
> > +
> > mutex_lock(&desc->lock);
> > if (setsockopt(sk, SOL_SOCKET, SO_PEEK_OFF, &id, sizeof(id))) {
> > mutex_unlock(&desc->lock);
> > diff --git a/criu/files-reg.c b/criu/files-reg.c
> > index 3b93bb9..bc2c330 100644
> > --- a/criu/files-reg.c
> > +++ b/criu/files-reg.c
> > @@ -134,7 +134,11 @@ static int mkreg_ghost(char *path, u32 mode, struct
> > ghost_file *gf, struct cr_im
>
> Applying: Fixed negative returns issues introduced by remote images code.
> fatal: corrupt patch at line 30
>
> Looks like the previous two lines was the one line in an original patch.
>
> How do you send patches? I recomend to use git send-email.
> https://www.freedesktop.org/wiki/Software/PulseAudio/HowToUseGitSendEmail/
>
>
Hmm... Which lines are repeated?
I use:
git commit
git format-patch -1 HEAD
(copy to email, send)
However, git send-email seems very cool :-)
> > if (gfd < 0)
> > return -1;
> >
> > - ret = copy_file(img_raw_fd(img), gfd, 0);
> > + int rfd = img_raw_fd(img);
> > + if (rfd < 0)
> > + return -1;
> > +
> > + ret = copy_file(rfd, gfd, 0);
> > if (ret < 0)
> > unlink(path);
> > close(gfd);
> > diff --git a/criu/image.c b/criu/image.c
> > index 57d3c7b..7bf52d9 100644
> > --- a/criu/image.c
> > +++ b/criu/image.c
> > @@ -333,8 +333,15 @@ int do_open_remote_image(int dfd, char *path, int
> flags)
> > * change to previous working dir and back to correctly open the
> image
> > * proxy and cache sockets. */
> > int save = dirfd(opendir("."));
> > - if (fchdir(get_service_fd(IMG_FD_OFF)) < 0) {
> > - pr_debug("fchdir to dfd failed!\n");
> > + int service_fd = get_service_fd(IMG_FD_OFF);
> > +
> > + if (service_fd < 0) {
> > + pr_err("Unable to get service fd.\n");
> > + return -1;
> > + }
> > +
> > + if (fchdir(service_fd) < 0) {
> > + pr_perror("fchdir to dfd failed");
> > return -1;
> > }
> >
> > diff --git a/criu/img-remote-proto.c b/criu/img-remote-proto.c
> > index c05b921..34074f2 100644
> > --- a/criu/img-remote-proto.c
> > +++ b/criu/img-remote-proto.c
> > @@ -593,7 +593,6 @@ void *accept_local_image_connections(void *port)
> > if (cli_fd < 0) {
> > if (!finished)
> > pr_err("Unable to accept local image
> connection");
> > - close(cli_fd);
> > return NULL;
> > }
> >
> > @@ -624,6 +623,7 @@ void *accept_local_image_connections(void *port)
> > int fd = open_proc_rw(PROC_GEN, LAST_PID_PATH);
> > if (fd < 0) {
> > pr_perror("Can't open %s", LAST_PID_PATH);
> > + return NULL;
> > }
> >
> > if (flock(fd, LOCK_EX)) {
> > diff --git a/criu/img-remote.c b/criu/img-remote.c
> > index 337cb4a..7dbde0e 100644
> > --- a/criu/img-remote.c
> > +++ b/criu/img-remote.c
> > @@ -127,6 +127,11 @@ int skip_remote_bytes(int fd, unsigned long len)
> > int n = 0;
> > unsigned long curr = 0;
> >
> > + if (fd < 0) {
> > + pr_perror("Invalid fd: %d", fd);
> > + return -1;
> > + }
> > +
> > for (; curr < len; ) {
> > n = read(fd, buf, min(len - curr, (unsigned long)4096));
> > if (n == 0) {
> > --
> > 1.9.1
> >
> >
> >
> > _______________________________________________
> > CRIU mailing list
> > CRIU at openvz.org
> > https://lists.openvz.org/mailman/listinfo/criu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvz.org/pipermail/criu/attachments/20170301/f5513cc6/attachment.html>
More information about the CRIU
mailing list