From: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
Cc: Linux Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: [PATCH 1/4] Revert "sysvipc-shm: correctly handle deleted (active) ipc shared memory"
Date: Wed, 15 Apr 2009 11:02:21 -0500 [thread overview]
Message-ID: <20090415160221.GA31929@us.ibm.com> (raw)
( this patchset applies on top of v14-3-dev to turn the deferqueue into
a generic mechanism )
From 274f58b8f265dc54e13728aa742c4852bde44ec1 Mon Sep 17 00:00:00 2001
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Date: Tue, 14 Apr 2009 16:06:41 -0700
Subject: [PATCH 1/4] Revert "sysvipc-shm: correctly handle deleted (active) ipc shared memory"
This reverts commit 373eb88b3d338edc5039d34a30a4574f9a9fdfba.
---
ipc/ckpt_shm.c | 44 ++++----------------------------------------
1 files changed, 4 insertions(+), 40 deletions(-)
diff --git a/ipc/ckpt_shm.c b/ipc/ckpt_shm.c
index c5b7f60..ee9b77a 100644
--- a/ipc/ckpt_shm.c
+++ b/ipc/ckpt_shm.c
@@ -145,25 +145,6 @@ int cr_write_ipc_shm(struct cr_ctx *ctx, struct ipc_namespace *ipcns)
* ipc restart
*/
-struct cr_dq_ipcshm_del {
- struct ipc_namespace *ipcns;
- int id;
-};
-
-static int cr_ipc_shm_delete(void *data)
-{
- struct cr_dq_ipcshm_del *dq = (struct cr_dq_ipcshm_del *) data;
- mm_segment_t old_fs;
- int ret;
-
- old_fs = get_fs();
- set_fs(get_ds());
- ret = shmctl_down(dq->ipcns, dq->id, IPC_RMID, NULL, 0);
- set_fs(old_fs);
-
- return ret;
-}
-
int cr_ipc_shm_attach(struct file *file,
unsigned long vm_addr,
unsigned long vm_flags)
@@ -243,25 +224,7 @@ static int cr_do_read_ipc_shm(struct cr_ctx *ctx)
if (hh->flags & SHM_HUGETLB) /* FIXME: support SHM_HUGETLB */
goto out;
- /*
- * SHM_DEST means that the shm is to be deleted after creation.
- * However, deleting before it's actually attached is quite silly.
- * Instead, we defer this task to until restart has succeeded.
- */
- if (hh->perms.mode & SHM_DEST) {
- struct cr_dq_ipcshm_del dq;
-
- /* to not confuse the rest of the code */
- hh->perms.mode &= ~SHM_DEST;
-
- dq.ipcns = current->nsproxy->ipc_ns;
- dq.id = hh->perms.id;
-
- ret = cr_deferqueue_add(ctx, cr_ipc_shm_delete,
- 0, &dq, sizeof(dq));
- if (ret < 0)
- goto out;
- }
+ /* FIXME: this will fail for deleted ipc shm segments */
shmflag = hh->flags | hh->perms.mode | IPC_CREAT | IPC_EXCL;
cr_debug("shm: do_shmget size %lld flag %#x id %d\n",
@@ -272,6 +235,7 @@ static int cr_do_read_ipc_shm(struct cr_ctx *ctx)
goto out;
down_write(&shm_ids->rw_mutex);
+
ret = -EIDRM;
perms = ipc_lock(shm_ids, hh->perms.id);
if (IS_ERR(perms)) { /* this should not happen .. but be safe */
@@ -297,9 +261,9 @@ static int cr_do_read_ipc_shm(struct cr_ctx *ctx)
/* deposit in objhash and read contents in */
ret = cr_obj_add_ref(ctx, file, hh->objref, CR_OBJ_FILE, 0);
if (ret < 0)
- goto fput;
+ goto file;
ret = cr_read_shmem_contents(ctx, file->f_dentry->d_inode);
- fput:
+ file:
fput(file);
out:
cr_hbuf_put(ctx, sizeof(*hh));
--
1.5.4.3
next reply other threads:[~2009-04-15 16:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-15 16:02 Serge E. Hallyn [this message]
[not found] ` <20090415160221.GA31929-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-04-15 16:02 ` [PATCH 2/4] Revert "Infrastructure for work postponed to the end of checkpoint/restart" Serge E. Hallyn
2009-04-15 16:02 ` [PATCH 3/4] deferqueue: generic queue to defer work Serge E. Hallyn
[not found] ` <20090415160254.GB31983-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-04-17 20:33 ` Oren Laadan
2009-04-15 16:03 ` [PATCH 4/4] sysvipc-shm: correctly handle deleted (active) ipc shared memory Serge E. Hallyn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090415160221.GA31929@us.ibm.com \
--to=serue-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox