Blame SOURCES/sshfs-fix-premature-free.patch

0fbcc1
diff -ur sshfs-2.8.old/ChangeLog sshfs-2.8/ChangeLog
0fbcc1
--- sshfs-2.8.old/ChangeLog	2016-06-22 19:38:01.000000000 +0100
0fbcc1
+++ sshfs-2.8/ChangeLog	2021-09-07 08:17:35.352080786 +0100
0fbcc1
@@ -1,3 +1,9 @@
0fbcc1
+ Unreleased Changes
0fbcc1
+ ------------------
0fbcc1
+
0fbcc1
++* Fixed a crash due to a race condition when listing
0fbcc1
++  directory contents.
0fbcc1
+
0fbcc1
 Release 2.7 (2016-06-22)
0fbcc1
 ------------------------
0fbcc1
 
0fbcc1
diff -ur sshfs-2.8.old/sshfs.c sshfs-2.8/sshfs.c
0fbcc1
--- sshfs-2.8.old/sshfs.c	2016-06-08 16:42:12.000000000 +0100
0fbcc1
+++ sshfs-2.8/sshfs.c	2021-09-07 08:17:06.339682726 +0100
0fbcc1
@@ -2173,11 +2173,16 @@
0fbcc1
 			outstanding--;
0fbcc1
 
0fbcc1
 			if (done) {
0fbcc1
+				/* We need to cache want_reply, since processing
0fbcc1
+				   thread may free req right after unlock() if
0fbcc1
+				   want_reply == 0 */
0fbcc1
+				int want_reply;
0fbcc1
 				pthread_mutex_lock(&sshfs.lock);
0fbcc1
 				if (sshfs_req_pending(req))
0fbcc1
 					req->want_reply = 0;
0fbcc1
+				want_reply = req->want_reply;
0fbcc1
 				pthread_mutex_unlock(&sshfs.lock);
0fbcc1
-				if (!req->want_reply)
0fbcc1
+				if (!want_reply)
0fbcc1
 					continue;
0fbcc1
 			}
0fbcc1