On 05/04/10 13:31, Amit Shah wrote:
On (Tue) May 04 2010 [13:24:58], Gerd Hoffmann wrote:
@@ -531,8 +534,12 @@ static int unix_write(int fd, const uint8_t *buf, int len1)
       while (len>   0) {
           ret = write(fd, buf, len);
           if (ret<   0) {
-            if (errno != EINTR&&   errno != EAGAIN)
+            if (len1 - len) {
+                return len1 - len;
+            }
+            if (errno != EINTR&&   errno != EAGAIN) {
                   return -1;
+            }

This makes unix_write pass -EINTR up to the caller which it didn't before.

Only on partial writes. Should be OK, no?

No. Callers which never saw partial writes due to write() syscall being interrupted by some signal start seeing them now.

cheers,
  Gerd



Reply via email to