diff -uNr openssh-portable-V_9_5_P1/mux.c openssh-portable-V_9_5_P1.mod/mux.c
--- openssh-portable-V_9_5_P1/mux.c	2023-10-04 07:34:10.000000000 +0300
+++ openssh-portable-V_9_5_P1.mod/mux.c	2023-11-23 16:29:34.264542664 +0200
@@ -1325,6 +1325,22 @@
 	}
 
 	/* Now atomically "move" the mux socket into position */
+#ifdef __ANDROID__
+	/* Android does not support hard links, so use a non-atomic
+	   check-then-rename for now. */
+	if (access(orig_control_path, F_OK) == 0) {
+		error("ControlSocket %s already exists, disabling multiplexing",
+		    orig_control_path);
+		unlink(options.control_path);
+		goto disable_mux_master;
+	} else {
+		if (rename(options.control_path, orig_control_path) == -1) {
+			fatal("%s: link mux listener %s => %s: %s", __func__, 
+			    options.control_path, orig_control_path,
+			    strerror(errno));
+		}
+	}
+#else
 	if (link(options.control_path, orig_control_path) != 0) {
 		if (errno != EEXIST) {
 			fatal_f("link mux listener %s => %s: %s",
@@ -1337,6 +1353,7 @@
 		goto disable_mux_master;
 	}
 	unlink(options.control_path);
+#endif
 	free(options.control_path);
 	options.control_path = orig_control_path;
 
