+--- rsync-3.2.3/syscall.c~ 2020-07-28 01:36:55.000000000 +0200
++++ rsync-3.2.3/syscall.c 2020-11-06 17:26:04.220502740 +0100
+@@ -232,7 +232,8 @@ int do_chmod(const char *path, mode_t mo
+ RETURN_ERROR_IF_RO_OR_LO;
+ #ifdef HAVE_LCHMOD
+ code = lchmod(path, mode & CHMOD_BITS);
+-#else
++ if (code < 0 && errno == ENOTSUP) {
++#endif
+ if (S_ISLNK(mode)) {
+ # if defined HAVE_SETATTRLIST
+ struct attrlist attrList;
+@@ -247,6 +248,8 @@ int do_chmod(const char *path, mode_t mo
+ # endif
+ } else
+ code = chmod(path, mode & CHMOD_BITS); /* DISCOURAGED FUNCTION */
++#ifdef HAVE_LCHMOD
++ }
+ #endif /* !HAVE_LCHMOD */
+ if (code != 0 && (preserve_perms || preserve_executability))
+ return code;