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