Commit a5c6c02f authored by Kinsbursky Stanislav's avatar Kinsbursky Stanislav Committed by Cyrill Gorcunov

restore: shmid_id structure from find_shmem_id() function

Returning shmid value of not enough, because SYSV IPC shmid equal to zero is a
valid value.
Signed-off-by: 's avatarStanislav Kinsbursky <skinsbursky@openvz.org>
Acked-by: 's avatarPavel Emelyanov <xemul@parallels.com>
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent b3cfe735
...@@ -440,15 +440,15 @@ static int prepare_shared(int ps_fd) ...@@ -440,15 +440,15 @@ static int prepare_shared(int ps_fd)
return ret; return ret;
} }
static unsigned long find_shmem_id(unsigned long addr) static struct shmem_id *find_shmem_id(unsigned long addr)
{ {
struct shmem_id *si; struct shmem_id *si;
for (si = shmem_ids; si; si = si->next) for (si = shmem_ids; si; si = si->next)
if (si->addr <= addr && si->end >= addr) if (si->addr <= addr && si->end >= addr)
return si->shmid; return si;
return 0; return NULL;
} }
static int save_shmem_id(struct shmem_entry *e) static int save_shmem_id(struct shmem_entry *e)
...@@ -529,13 +529,13 @@ find_shmem_page(struct shmems *shms, unsigned long addr, unsigned long shmid) ...@@ -529,13 +529,13 @@ find_shmem_page(struct shmems *shms, unsigned long addr, unsigned long shmid)
static int try_fixup_shared_map(int pid, struct vma_entry *vi, int fd) static int try_fixup_shared_map(int pid, struct vma_entry *vi, int fd)
{ {
struct shmem_info *si; struct shmem_info *si;
unsigned long shmid; struct shmem_id *shmid;
shmid = find_shmem_id(vi->start); shmid = find_shmem_id(vi->start);
if (!shmid) if (!shmid)
return 0; return 0;
si = find_shmem(shmems, vi->start, shmid); si = find_shmem(shmems, vi->start, shmid->shmid);
pr_info("%d: Search for %016lx shmem %p/%d\n", pid, vi->start, si, si ? si->pid : -1); pr_info("%d: Search for %016lx shmem %p/%d\n", pid, vi->start, si, si ? si->pid : -1);
if (!si) { if (!si) {
...@@ -610,7 +610,7 @@ static int fixup_vma_fds(int pid, int fd) ...@@ -610,7 +610,7 @@ static int fixup_vma_fds(int pid, int fd)
static inline bool should_restore_page(int pid, unsigned long va) static inline bool should_restore_page(int pid, unsigned long va)
{ {
struct shmem_info *si; struct shmem_info *si;
unsigned long shmid; struct shmem_id *shmid;
/* /*
* If this is not a shmem virtual address * If this is not a shmem virtual address
...@@ -620,7 +620,7 @@ static inline bool should_restore_page(int pid, unsigned long va) ...@@ -620,7 +620,7 @@ static inline bool should_restore_page(int pid, unsigned long va)
if (!shmid) if (!shmid)
return true; return true;
si = find_shmem_page(shmems, va, shmid); si = find_shmem_page(shmems, va, shmid->shmid);
return si->pid == pid; return si->pid == pid;
} }
......
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