diff options
author | Volker Lendecke <vl@samba.org> | 2011-01-23 09:12:43 +0100 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2011-01-23 10:05:39 +0100 |
commit | 61f7d7cdeccb1f733590e8bdb8229b32363a815e (patch) | |
tree | 5e89deee8006a3b95b05698ae92a0619bf37e29c | |
parent | 058de59a8e197f6bd9de95dd5de709f018cce6d1 (diff) | |
download | samba-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.c | 4 |
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; |