[Devel] [PATCH 2/2] Fix restoring unlinked UNIX sockets

Dan Smith danms at us.ibm.com
Tue Jul 27 08:57:18 PDT 2010


We already support the concept, but the logic controlling whether or not we
restore the CWD path didn't follow.  This patch adds a check of the
"unlinked" flag we've already set before saving or restoring the CWD string.

This fixes an issue with a real-world workload that I have which utilizes
AF_UNIX sockets.

Signed-off-by: Dan Smith <danms at us.ibm.com>
---
 net/unix/checkpoint.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/unix/checkpoint.c b/net/unix/checkpoint.c
index 47d38e2..9522c3a 100644
--- a/net/unix/checkpoint.c
+++ b/net/unix/checkpoint.c
@@ -165,7 +165,8 @@ int unix_checkpoint(struct ckpt_ctx *ctx, struct socket *sock)
 	if (ret < 0)
 		goto out;
 
-	if (unix_need_cwd(&un->laddr, un->laddr_len))
+	if (unix_need_cwd(&un->laddr, un->laddr_len) &&
+	    (un->flags & CKPT_UNIX_LINKED))
 		ret = unix_write_cwd(ctx, sock->sk, un->laddr.sun_path);
  out:
 	ckpt_hdr_put(ctx, un);
@@ -614,10 +615,12 @@ int unix_restore(struct ckpt_ctx *ctx, struct socket *sock,
 	if (un->peer < 0)
 		goto out;
 
-	if (unix_need_cwd(&un->laddr, un->laddr_len)) {
+	if (unix_need_cwd(&un->laddr, un->laddr_len) &&
+	    (un->flags & CKPT_UNIX_LINKED)) {
 		cwd = ckpt_read_string(ctx, PATH_MAX);
 		if (IS_ERR(cwd)) {
 			ret = PTR_ERR(cwd);
+			cwd = NULL;
 			goto out;
 		}
 	}
-- 
1.7.1.1

_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list