Print this page
5133 Upstream SMB client fixes: Nexenta SUP-538 and SUP-548

@@ -30,13 +30,13 @@
  * SUCH DAMAGE.
  *
  * $Id: smb_trantcp.c,v 1.39 2005/03/02 01:27:44 lindak Exp $
  */
 /*
- * Copyright 2012 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/autoconf.h>

@@ -594,11 +594,14 @@
         nbp->nbp_flags &= ~NBF_CONNECTED;
         while (nbp->nbp_flags & (NBF_SENDLOCK | NBF_RECVLOCK)) {
                 nbp->nbp_flags |= NBF_LOCKWAIT;
                 cv_wait(&nbp->nbp_cv, &nbp->nbp_lock);
         }
-
+        if (nbp->nbp_frag != NULL) {
+                freemsg(nbp->nbp_frag);
+                nbp->nbp_frag = NULL;
+        }
         if (nbp->nbp_tiptr != NULL) {
                 (void) t_kclose(nbp->nbp_tiptr, 0);
                 nbp->nbp_tiptr = NULL;
         }
         nbp->nbp_state = NBST_CLOSED;

@@ -661,16 +664,10 @@
 
         mutex_enter(&nbp->nbp_lock);
 
         if ((nbp->nbp_flags & NBF_CONNECTED) != 0) {
                 nbp->nbp_flags &= ~NBF_CONNECTED;
-
-                if (nbp->nbp_frag != NULL) {
-                        freemsg(nbp->nbp_frag);
-                        nbp->nbp_frag = NULL;
-                }
-
                 err = nb_snddis(nbp);
         }
 
         mutex_exit(&nbp->nbp_lock);
         return (err);