logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

commit: r376 - in trunk: daemon libspread: msg#00020

Subject: commit: r376 - in trunk: daemon libspread
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@xxxxxxxxxxxx>
+
+       * 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@xxxxxxxxxxxx>
        * 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 );
         }


<Prev in Thread] Current Thread [Next in Thread>