Revision 1c293312 hw/virtio-9p.c

b/hw/virtio-9p.c
160 160
    return s->ops->chmod(&s->ctx, path->data, &cred);
161 161
}
162 162

  
163
static int v9fs_do_mknod(V9fsState *s, V9fsString *path, mode_t mode, dev_t dev)
163
static int v9fs_do_mknod(V9fsState *s, V9fsCreateState *vs, mode_t mode,
164
        dev_t dev)
164 165
{
165
    return s->ops->mknod(&s->ctx, path->data, mode, dev);
166
    FsCred cred;
167
    cred_init(&cred);
168
    cred.fc_uid = vs->fidp->uid;
169
    cred.fc_mode = mode;
170
    cred.fc_rdev = dev;
171
    return s->ops->mknod(&s->ctx, vs->fullname.data, &cred);
166 172
}
167 173

  
168 174
static int v9fs_do_mksock(V9fsState *s, V9fsString *path)
......
1825 1831
        }
1826 1832

  
1827 1833
        nmode |= vs->perm & 0777;
1828
        err = v9fs_do_mknod(s, &vs->fullname, nmode, makedev(major, minor));
1834
        err = v9fs_do_mknod(s, vs, nmode, makedev(major, minor));
1829 1835
        v9fs_create_post_perms(s, vs, err);
1830 1836
    } else if (vs->perm & P9_STAT_MODE_NAMED_PIPE) {
1831
        err = v9fs_do_mknod(s, &vs->fullname, S_IFIFO | (vs->mode & 0777), 0);
1837
        err = v9fs_do_mknod(s, vs, S_IFIFO | (vs->perm & 0777), 0);
1832 1838
        v9fs_post_create(s, vs, err);
1833 1839
    } else if (vs->perm & P9_STAT_MODE_SOCKET) {
1834 1840
        err = v9fs_do_mksock(s, &vs->fullname);

Also available in: Unified diff