Commit 6a0b94e7 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

restore: Don't leak opened file descriptor in shmem_remap

Don't forget to close opened file in case of error.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 85235af8
......@@ -343,8 +343,7 @@ static int prepare_pipes_pid(int pid)
static int shmem_remap(void *old_addr, void *new_addr, unsigned long size)
{
char path[PATH_MAX];
int fd;
void *ret;
int fd, ret = -1;
sprintf(path, "/proc/self/map_files/%lx-%lx",
(long)old_addr, (long)old_addr + size);
......@@ -355,15 +354,17 @@ static int shmem_remap(void *old_addr, void *new_addr, unsigned long size)
return -1;
}
ret = mmap(new_addr, size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED, fd, 0);
if (ret != new_addr) {
/* reuse old_addr variable */
old_addr = mmap(new_addr, size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED, fd, 0);
if (new_addr == old_addr)
ret = 0;
else
pr_perror("mmap failed");
return -1;
}
close(fd);
return 0;
return ret;
}
static int prepare_shared(int ps_fd)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment