diff options
author | Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com> | 2010-06-14 13:34:49 -0700 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-06-22 15:15:51 -0500 |
commit | f845484d8a59cb57ec130e353e5b4ec5d64c95c4 (patch) | |
tree | 71a99685ceef265b0ac1a3df2eeb20e47d03eeb0 /hw/virtio-9p.c | |
parent | 4ff89a1ef8ad4937723838f91d86c613bb3072f2 (diff) | |
download | qemu-f845484d8a59cb57ec130e353e5b4ec5d64c95c4.tar.gz qemu-f845484d8a59cb57ec130e353e5b4ec5d64c95c4.tar.bz2 qemu-f845484d8a59cb57ec130e353e5b4ec5d64c95c4.zip |
virtio-9p: Implement Security model for mksock using mknod.
This patch uses mknod to create socket.
On Host/Fileserver:
-rw-------. 1 virfsuid virtfsgid 0 2010-05-11 09:57 asocket1
On Guest/Client:
srwxr-xr-x 1 guestuser guestuser 0 2010-05-11 12:57 asocket1
Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/virtio-9p.c')
-rw-r--r-- | hw/virtio-9p.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c index d276db3762..f8c85c3d28 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); |