--- squashfs-tools/mksquashfs.c
+++ squashfs-tools/mksquashfs.c
@@ -1515,9 +1515,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);
 	}
@@ -2136,8 +2134,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);
 		} else {
 				pthread_mutex_unlock(&fragment_mutex);
