[Spread-cvs] commit: r376 - in trunk: daemon libspread

jonathan at spread.org jonathan at spread.org
Sun Nov 19 17:05:32 EST 2006


Author: jonathan
Date: 2006-11-19 17:05:32 -0500 (Sun, 19 Nov 2006)
New Revision: 376

Modified:
   trunk/daemon/Changelog
   trunk/libspread/sp.c
Log:
In sp.c, add missing Mutex_unlock() calls
before return(ILLEGAL_MESSAGE) calls in SP_recv. Fix deadlock reported
by Massimo Feola for 3.17.3. Also present in 4.



Modified: trunk/daemon/Changelog
===================================================================
--- trunk/daemon/Changelog	2006-11-19 21:06:01 UTC (rev 375)
+++ trunk/daemon/Changelog	2006-11-19 22:05:32 UTC (rev 376)
@@ -1,3 +1,9 @@
+Sun Nov 19 16:58:13 2006  Jonathan Stanton  <jonathan at cnds.jhu.edu>
+
+	* sp.c (SP_scat_receive):  Add missing Mutex_unlock() calls
+	before return(ILLEGAL_MESSAGE) calls. Fix deadlock reported
+	by Massimo Feola for 3.17.3. Also present in 4.
+
 Sun Nov 19 13:10:00 2006  Jonathan Stanton  <jonathan at cnds.jhu.edu>
 	* libspread/fl.c, stdutil/* (many): Update to stdutil 
 	version 1.0.0beta6.

Modified: trunk/libspread/sp.c
===================================================================
--- trunk/libspread/sp.c	2006-11-19 21:06:01 UTC (rev 375)
+++ trunk/libspread/sp.c	2006-11-19 22:05:32 UTC (rev 376)
@@ -1311,6 +1311,7 @@
                                 Sessions[ses].recv_message_saved = 1;
                                 Mutex_unlock( &Struct_mutex );
                         }
+                        Mutex_unlock( &Mbox_mutex[mbox & MAX_MUTEX_MASK][1] );
                         return( ILLEGAL_MESSAGE );
                 }
 		max_mess_len += scat_mess->elements[i].len;
@@ -1320,12 +1321,14 @@
             /* reject this message since it has an impossible (negative) num_groups
              * This is likely to be caused by a malicious attack or memory corruption
              */
+            Mutex_unlock( &Mbox_mutex[mbox & MAX_MUTEX_MASK][1] );
             return( ILLEGAL_MESSAGE );
         }
         if (head_ptr->data_len < 0) {
             /* reject this message since it has an impossible (negative) data_len
              * This is likely to be caused by a malicious attack or memory corruption
              */
+            Mutex_unlock( &Mbox_mutex[mbox & MAX_MUTEX_MASK][1] );
             return( ILLEGAL_MESSAGE );
         }
 




More information about the Spread-cvs mailing list