diff options
author | marks <none@none> | 2008-05-16 08:55:36 -0700 |
---|---|---|
committer | marks <none@none> | 2008-05-16 08:55:36 -0700 |
commit | 6d1e0b89f3e34478a022854df6b0cfab82ccce66 (patch) | |
tree | c3ba034a3471e771befb236330be4081cd492999 /usr/src/uts/common/fs/zfs/zfs_ctldir.c | |
parent | d36ea5d8d005e23fe097efbc1795808d752d398f (diff) | |
download | illumos-gate-6d1e0b89f3e34478a022854df6b0cfab82ccce66.tar.gz |
6700649 zfs_ctldir snapshot creation issues with CIFS clients
Diffstat (limited to 'usr/src/uts/common/fs/zfs/zfs_ctldir.c')
-rw-r--r-- | usr/src/uts/common/fs/zfs/zfs_ctldir.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/usr/src/uts/common/fs/zfs/zfs_ctldir.c b/usr/src/uts/common/fs/zfs/zfs_ctldir.c index 56bf50e842..ec3593ae22 100644 --- a/usr/src/uts/common/fs/zfs/zfs_ctldir.c +++ b/usr/src/uts/common/fs/zfs/zfs_ctldir.c @@ -78,6 +78,8 @@ #include <sys/mount.h> #include <sys/sunddi.h> +#include "zfs_namecheck.h" + typedef struct zfsctl_node { gfs_dir_t zc_gfs_private; uint64_t zc_id; @@ -428,6 +430,8 @@ zfsctl_snapshot_zname(vnode_t *vp, const char *name, int len, char *zname) { objset_t *os = ((zfsvfs_t *)((vp)->v_vfsp->vfs_data))->z_os; + if (snapshot_namecheck(name, NULL, NULL) != 0) + return (EILSEQ); dmu_objset_name(os, zname); if (strlen(zname) + 1 + strlen(name) >= len) return (ENAMETOOLONG); @@ -655,6 +659,9 @@ zfsctl_snapdir_mkdir(vnode_t *dvp, char *dirname, vattr_t *vap, vnode_t **vpp, static enum symfollow follow = NO_FOLLOW; static enum uio_seg seg = UIO_SYSSPACE; + if (snapshot_namecheck(dirname, NULL, NULL) != 0) + return (EILSEQ); + dmu_objset_name(zfsvfs->z_os, name); *vpp = NULL; |