summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-01-23 09:12:43 +0100
committerVolker Lendecke <vlendec@samba.org>2011-01-23 10:05:39 +0100
commit61f7d7cdeccb1f733590e8bdb8229b32363a815e (patch)
tree5e89deee8006a3b95b05698ae92a0619bf37e29c
parent058de59a8e197f6bd9de95dd5de709f018cce6d1 (diff)
downloadsamba-61f7d7cdeccb1f733590e8bdb8229b32363a815e.tar.gz
samba-61f7d7cdeccb1f733590e8bdb8229b32363a815e.tar.bz2
samba-61f7d7cdeccb1f733590e8bdb8229b32363a815e.zip
s3: Fix an infinite loop
If select returns EBADF (which should NEVER happen), then we loop infinitely because the select masks seem all active. I've been given an strace where smbd floods syslog with inotify-related error messages. The strace shows that select returns EBADF, and we're calling the inotify event callback. It then complains there's no data on the inotify fd. Metze, please check! We might need to fix this in 3.4 and 3.5 as well. And we need to find the deeper reason where we close a file descriptor and don't tell the events system about it. Volker Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Sun Jan 23 10:05:39 CET 2011 on sn-devel-104
-rw-r--r--source3/lib/events.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/source3/lib/events.c b/source3/lib/events.c
index d987072884..802a2e5731 100644
--- a/source3/lib/events.c
+++ b/source3/lib/events.c
@@ -120,6 +120,10 @@ bool run_events(struct tevent_context *ev,
return false;
}
+ if (selrtn <= 0) {
+ return false;
+ }
+
for (fde = ev->fd_events; fde; fde = fde->next) {
uint16 flags = 0;