diff --git a/src/archive.c b/src/archive.c
index dab9f4d8be290ef633a2b9c8455f04fbd4163053..e58f6d5995e535125c7940c8d5d598096973df83 100644
--- a/src/archive.c
+++ b/src/archive.c
@@ -494,7 +494,7 @@ int apk_archive_entry_extract(int atfd, const struct apk_file_info *ae,
 			if (r != -ENOTSUP)
 				apk_error("Failed to set xattrs on %s: %s",
 					  fn, strerror(-r));
-			if (!ret) ret = -errno;
+			if (!ret) ret = r;
 		}
 	}
 
@@ -512,5 +512,5 @@ int apk_archive_entry_extract(int atfd, const struct apk_file_info *ae,
 		}
 	}
 
-	return 0;
+	return ret;
 }