s3: Use sys_read in fork_domain_child
authorVolker Lendecke <vl@samba.org>
Fri, 26 Aug 2011 09:38:21 +0000 (11:38 +0200)
committerKarolin Seeger <kseeger@samba.org>
Fri, 16 Sep 2011 18:42:30 +0000 (20:42 +0200)
I've seen

[2011/08/26 01:44:10.872057,  1] winbindd/winbindd_dual.c:1336(fork_domain_child)
  fork_domain_child: Could not read child status: nread=-1, error=Interrupted system call

on a customer box. Not good.
(cherry picked from commit 964e809ce2069ad888e0fb12dfe51bac5a461508)

The last 3 patches address bug #8409 (f7d97868 created a new race condition).
(cherry picked from commit 2f0a5b477f58378c3505631d15b422057b037efe)

source3/winbindd/winbindd_dual.c

index 99dbdcf245ae4d1026a74b3916a53ce489c8e094..f4edf1dc02d0763240f993c407a576f95ac897a1 100644 (file)
@@ -1330,7 +1330,7 @@ static bool fork_domain_child(struct winbindd_child *child)
 
                close(fdpair[0]);
 
-               nread = read(fdpair[1], &status, sizeof(status));
+               nread = sys_read(fdpair[1], &status, sizeof(status));
                if (nread != sizeof(status)) {
                        DEBUG(1, ("fork_domain_child: Could not read child status: "
                                  "nread=%d, error=%s\n", (int)nread,