From patchwork Sat Jun 5 01:08:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jvrao X-Patchwork-Id: 104365 Received: from lists.sourceforge.net (lists.sourceforge.net [216.34.181.88]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o5515ZFO028325 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sat, 5 Jun 2010 01:06:11 GMT Received: from localhost ([127.0.0.1] helo=sfs-ml-2.v29.ch3.sourceforge.com) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1OKhpC-0003Em-NZ; Sat, 05 Jun 2010 01:05:22 +0000 Received: from sfi-mx-3.v28.ch3.sourceforge.com ([172.29.28.123] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1OKhpB-0003Ea-Md for v9fs-developer@lists.sourceforge.net; Sat, 05 Jun 2010 01:05:21 +0000 X-ACL-Warn: Received: from e31.co.us.ibm.com ([32.97.110.149]) by sfi-mx-3.v28.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69) id 1OKhpA-00054q-R3 for v9fs-developer@lists.sourceforge.net; Sat, 05 Jun 2010 01:05:21 +0000 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by e31.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id o550sokm006561 for ; Fri, 4 Jun 2010 18:54:50 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o5515EVY149128 for ; Fri, 4 Jun 2010 19:05:15 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o5515Enl008033 for ; Fri, 4 Jun 2010 19:05:14 -0600 Received: from localhost.localdomain (elm9m80.beaverton.ibm.com [9.47.81.80]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id o55156BI007599; Fri, 4 Jun 2010 19:05:14 -0600 From: "Venkateswararao Jujjuri (JV)" To: qemu-devel@nongnu.org Date: Fri, 4 Jun 2010 18:08:52 -0700 Message-Id: <1275700132-22823-11-git-send-email-jvrao@linux.vnet.ibm.com> X-Mailer: git-send-email 1.6.0.6 In-Reply-To: <1275700132-22823-1-git-send-email-jvrao@linux.vnet.ibm.com> References: <1275700132-22823-1-git-send-email-jvrao@linux.vnet.ibm.com> X-Spam-Score: -0.2 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.2 AWL AWL: From: address is in the auto white-list X-Headers-End: 1OKhpA-00054q-R3 Cc: v9fs-developer@lists.sourceforge.net, aliguori@us.ibm.com Subject: [V9fs-developer] [PATCH-V5 10/10] virtio-9p: Implement Security model for mksock using mknod. X-BeenThere: v9fs-developer@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: v9fs-developer-bounces@lists.sourceforge.net X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Sat, 05 Jun 2010 01:06:11 +0000 (UTC) diff --git a/hw/file-op-9p.h b/hw/file-op-9p.h index 5bc61b5..a741c93 100644 --- a/hw/file-op-9p.h +++ b/hw/file-op-9p.h @@ -52,7 +52,6 @@ typedef struct FileOperations int (*chmod)(FsContext *, const char *, FsCred *); int (*chown)(FsContext *, const char *, FsCred *); int (*mknod)(FsContext *, const char *, FsCred *); - int (*mksock)(FsContext *, const char *); int (*utime)(FsContext *, const char *, const struct utimbuf *); int (*remove)(FsContext *, const char *); int (*symlink)(FsContext *, const char *, const char *, FsCred *); diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c index b54624c..47aeaf9 100644 --- a/hw/virtio-9p-local.c +++ b/hw/virtio-9p-local.c @@ -230,28 +230,6 @@ err_end: return err; } -static int local_mksock(FsContext *ctx2, const char *path) -{ - struct sockaddr_un addr; - int s; - - addr.sun_family = AF_UNIX; - snprintf(addr.sun_path, 108, "%s", rpath(ctx2, path)); - - s = socket(PF_UNIX, SOCK_STREAM, 0); - if (s == -1) { - return -1; - } - - if (bind(s, (struct sockaddr *)&addr, sizeof(addr))) { - close(s); - return -1; - } - - close(s); - return 0; -} - static int local_mkdir(FsContext *fs_ctx, const char *path, FsCred *credp) { int err = -1; @@ -507,7 +485,6 @@ FileOperations local_ops = { .writev = local_writev, .chmod = local_chmod, .mknod = local_mknod, - .mksock = local_mksock, .mkdir = local_mkdir, .fstat = local_fstat, .open2 = local_open2, diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c index d276db3..f8c85c3 100644 --- a/hw/virtio-9p.c +++ b/hw/virtio-9p.c @@ -171,11 +171,6 @@ static int v9fs_do_mknod(V9fsState *s, V9fsCreateState *vs, mode_t mode, return s->ops->mknod(&s->ctx, vs->fullname.data, &cred); } -static int v9fs_do_mksock(V9fsState *s, V9fsString *path) -{ - return s->ops->mksock(&s->ctx, path->data); -} - static int v9fs_do_mkdir(V9fsState *s, V9fsCreateState *vs) { FsCred cred; @@ -1740,22 +1735,6 @@ out: v9fs_post_create(s, vs, err); } -static void v9fs_create_post_mksock(V9fsState *s, V9fsCreateState *vs, - int err) -{ - if (err) { - err = -errno; - goto out; - } - - err = v9fs_do_chmod(s, &vs->fullname, vs->perm & 0777); - v9fs_create_post_perms(s, vs, err); - return; - -out: - v9fs_post_create(s, vs, err); -} - static void v9fs_create_post_fstat(V9fsState *s, V9fsCreateState *vs, int err) { if (err) { @@ -1837,8 +1816,8 @@ static void v9fs_create_post_lstat(V9fsState *s, V9fsCreateState *vs, int err) err = v9fs_do_mknod(s, vs, S_IFIFO | (vs->perm & 0777), 0); v9fs_post_create(s, vs, err); } else if (vs->perm & P9_STAT_MODE_SOCKET) { - err = v9fs_do_mksock(s, &vs->fullname); - v9fs_create_post_mksock(s, vs, err); + err = v9fs_do_mknod(s, vs, S_IFSOCK | (vs->perm & 0777), 0); + v9fs_post_create(s, vs, err); } else { vs->fidp->fd = v9fs_do_open2(s, vs); v9fs_create_post_open2(s, vs, err);