--- ./source/private_module/smb1/smb_async_open.c	2018-08-18 07:43:05.000000000 +0000
+++ ./source/private_module/smb1/smb_async_open.c.hotpatch	2018-09-19 01:17:44.000000000 +0000
@@ -1377,8 +1377,8 @@
         NAS_DBG(MOD_NAS_PROTO, LOG_ERROR, "Rc:%d.", err);
         goto out;    
     }
-
-/*9000C20wormļԾܾdelete on close*/
+    if ((sr->tid_tree->t_snode == node) && (op->create_options & FILE_DELETE_ON_CLOSE)){ smb_node_release(node); smb_node_release(dnode);
+        smbsr_error(sr, NT_STATUS_ACCESS_DENIED, ERRDOS, ERROR_ACCESS_DENIED); err = NT_STATUS_ACCESS_DENIED; NAS_DBG(MOD_NAS_PROTO, LOG_ERROR, "Rc:%d.", err); goto out;}
 #ifdef PRODUCT_SNAS
     err = smb_check_worm_file(sr, node);
     if(err)
--- ./source/private_module/smb1/smb_common_open.c	2018-08-18 07:43:05.000000000 +0000
+++ ./source/private_module/smb1/smb_common_open.c.hotpatch	2018-09-19 01:17:44.000000000 +0000
@@ -883,7 +883,7 @@
     CHECK_NULL_POINTER(sr->uid_user, NT_STATUS_INVALID_PARAMETER);
     CHECK_NULL_POINTER(op, NT_STATUS_INVALID_PARAMETER);
     CHECK_NULL_POINTER(new_attr, NT_STATUS_INVALID_PARAMETER);
-
+    CHECK_NULL_POINTER(sr->tid_tree, NT_STATUS_INVALID_PARAMETER);
     node  = op->fqi.fq_fnode;
     dnode = op->fqi.fq_dnode;
 
@@ -948,10 +948,10 @@
         NAS_DBG(MOD_NAS_PROTO, LOG_DEBUG, "NODE_FLAGS_DELETE_ON_CLOSE failed, rc:%d", rc);
         return (NT_STATUS_DELETE_PENDING);
     }
-
-    /*
-     * Ŀ¼read-only Ȩ޼
-     * Լļread_only Ȩ޼
+    if ((sr->tid_tree->t_snode == node) && (op->create_options & FILE_DELETE_ON_CLOSE)){
+        smb_node_release(node); smb_node_release(dnode); smbsr_error(sr, NT_STATUS_ACCESS_DENIED, ERRDOS, ERROR_ACCESS_DENIED);
+        NAS_DBG(MOD_NAS_PROTO, LOG_ERROR, "Path %s, count %d.", node->full_share_path, atomic_read(&node->n_share_count)); return NT_STATUS_ACCESS_DENIED;}
+    /* Ŀ¼read-only Ȩ޼Լļread_only Ȩ޼
      */
     rc = smb_open_file_readonly_check(sr, node, dnode, op);
     if (NAS_OK != rc)
--- ./source/private_module/smb1/smb_set_fileinfo.c	2018-08-18 07:43:06.000000000 +0000
+++ ./source/private_module/smb1/smb_set_fileinfo.c.hotpatch	2018-09-19 01:17:44.000000000 +0000
@@ -1785,7 +1785,7 @@
         NAS_DBG(MOD_NAS_PROTO, LOG_DEBUG, "node flags %x", sinfo->si_node->flags);
         SMB1_CHECK_ERROR_CONDITION_RET_WITH_ERRCODE((sinfo->si_node->flags & NODE_FLAGS_DENNY_DELETE), NAS_ERROR, sr, NT_STATUS_CANNOT_DELETE, ERRDOS, ERROR_ACCESS_DENIED);
 #endif
-
+        SMB1_CHECK_ERROR_CONDITION_RET_WITH_ERRCODE((sr->tid_tree && (sr->tid_tree->t_snode == sinfo->si_node)),NAS_ERROR,sr,NT_STATUS_ACCESS_DENIED,ERRDOS,ERROR_ACCESS_DENIED);
         if ((NULL != sinfo->si_node) && (NULL != sinfo->si_node->n_nep) )
         {
             NAS_DBG(MOD_NAS_PROTO, LOG_DEBUG, "sinfo->si_node->n_nep->ne_type:%d", sinfo->si_node->n_nep->ne_type);
