-@@ -972,7 +981,7 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
+@@ -281,6 +281,10 @@ int get_xattr(const char *fname, stat_x *sxp)
+ {
+ sxp->xattr = new(item_list);
+ *sxp->xattr = empty_xattr;
++
++ if (IS_SPECIAL(sxp->st.st_mode) || IS_DEVICE(sxp->st.st_mode))
++ return 0;
++
+ if (rsync_xal_get(fname, sxp->xattr) < 0) {
+ free_xattr(sxp);
+ return -1;
+@@ -861,6 +865,11 @@ int set_xattr(const char *fname, const struct file_struct *file,
+ return -1;
+ }
+
++ if (IS_SPECIAL(sxp->st.st_mode) || IS_DEVICE(sxp->st.st_mode)) {
++ errno = ENOTSUP;
++ return -1;
++ }
++
+ ndx = F_XATTR(file);
+ return rsync_xal_set(fname, lst + ndx, fnamecmp, sxp);
+ }
+@@ -977,7 +986,7 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)