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