diff options
author | jb150015 <none@none> | 2008-02-18 14:36:38 -0800 |
---|---|---|
committer | jb150015 <none@none> | 2008-02-18 14:36:38 -0800 |
commit | 7b59d02d2a384be9a08087b14defadd214b3c1dd (patch) | |
tree | 0f2f686988177443cf737b0f0582d9ed9deb1bf5 /usr/src/uts/common/fs/smbsrv/smb_vops.c | |
parent | 80feccabd0bc0fca1df2b60bfa50449d9a6e3e09 (diff) | |
download | illumos-joyent-7b59d02d2a384be9a08087b14defadd214b3c1dd.tar.gz |
6653315 Want smb interface to associate hostname with network interfaces
6657760 libsmb should look for an interposition library for local user management
6649844 smbd restarts during stress tests.
6650829 smb_enable_service() waits in vain
6616507 CIFS server code should eradicate its use of setjmp()/longjmp()
6655326 CIFS named streams are too permissive
6630437 smb_smf_create_service_pgroup() can segfault on failure
6630441 smb_smf_scf_init() can segfault on failure
--HG--
rename : usr/src/lib/smbsrv/libsmbns/common/smbns_nicconfig.c => usr/src/lib/smbsrv/libsmb/common/smb_nic.c
Diffstat (limited to 'usr/src/uts/common/fs/smbsrv/smb_vops.c')
-rw-r--r-- | usr/src/uts/common/fs/smbsrv/smb_vops.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/smbsrv/smb_vops.c b/usr/src/uts/common/fs/smbsrv/smb_vops.c index a7056d5f3a..db3dd3a1c0 100644 --- a/usr/src/uts/common/fs/smbsrv/smb_vops.c +++ b/usr/src/uts/common/fs/smbsrv/smb_vops.c @@ -351,12 +351,21 @@ smb_vop_getattr(vnode_t *vp, vnode_t *unnamed_vp, smb_attr_t *ret_attr, /* * smb_vop_setattr() * - * smb_fsop_setattr()/smb_vop_setattr() should always be called from the CIFS - * service to set attributes due to special processing for streams files. + * smb_fsop_setattr()/smb_vop_setattr() should always be used instead of + * VOP_SETATTR() when calling from the CIFS service, due to special processing + * for streams files. * - * When smb_vop_setattr() is called on a named stream file, all indicated - * attributes except the size are set on the unnamed stream file. The size - * (if indicated) is set on the named stream file. + * Streams have a size but otherwise do not have separate attributes from + * the (unnamed stream) file, i.e., the security and ownership of the file + * applies to the stream. In contrast, extended attribute files, which are + * used to implement streams, are independent objects with their own + * attributes. + * + * For compatibility with streams, we set the size on the extended attribute + * file and apply other attributes to the (unnamed stream) file. The one + * exception is that the UID and GID can be set on the stream by passing a + * NULL unnamed_vp, which allows callers to synchronize stream ownership + * with the (unnamed stream) file. */ int @@ -403,7 +412,8 @@ smb_vop_setattr(vnode_t *vp, vnode_t *unnamed_vp, smb_attr_t *set_attr, /* * If the size of the stream needs to be set, set it on * the stream file directly. (All other indicated attributes - * are set on the stream's unnamed stream, above.) + * are set on the stream's unnamed stream, except under the + * exception described in the function header.) */ if (at_size) { |