summaryrefslogtreecommitdiffstats
path: root/abs/core/squashfs-tools/mksquashfs-fix-race.patch
blob: e483c937148992379a0cb5aadde9abe4fd9b8f77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--- squashfs-tools/mksquashfs.c	2009-04-05 18:22:48.000000000 -0300
+++ squashfs-tools/mksquashfs.c	2010-02-10 17:04:29.303757175 -0300
@@ -1733,9 +1733,7 @@
 		entry->buffer->block = bytes;
 		bytes += compressed_size;
 		fragments_outstanding --;
-		pthread_mutex_unlock(&fragment_mutex);
 		queue_put(to_writer, entry->buffer);
-		pthread_mutex_lock(&fragment_mutex);
 		TRACE("fragment_locked writing fragment %d, compressed size %d"
 			"\n", entry->fragment, compressed_size);
 		free(entry);
@@ -2426,8 +2424,8 @@
 			write_buffer->block = bytes;
 			bytes += compressed_size;
 			fragments_outstanding --;
-			pthread_mutex_unlock(&fragment_mutex);
 			queue_put(to_writer, write_buffer);
+			pthread_mutex_unlock(&fragment_mutex);
 			TRACE("Writing fragment %lld, uncompressed size %d, "
 				"compressed size %d\n", file_buffer->block,
 				file_buffer->size, compressed_size);