+++ /dev/null
-Index: samba-3.6.6/source3/smbd/notify_inotify.c
-===================================================================
---- samba-3.6.6.orig/source3/smbd/notify_inotify.c
-+++ samba-3.6.6/source3/smbd/notify_inotify.c
-@@ -77,6 +77,7 @@ struct inotify_private {
- struct sys_notify_context *ctx;
- int fd;
- struct inotify_watch_context *watches;
-+ bool broken_inotify; /* Late stop for broken system */
- };
-
- struct inotify_watch_context {
-@@ -241,8 +242,15 @@ static void inotify_handler(struct event
- filenames, and thus can't know how much to allocate
- otherwise
- */
-- if (ioctl(in->fd, FIONREAD, &bufsize) != 0 ||
-- bufsize == 0) {
-+ if ((ioctl(in->fd, FIONREAD, &bufsize) != 0) && (errno == EACCES)) {
-+ /*
-+ * Workaround for broken system (SELinux policy bug fixed since long but it is always better not to loop on EACCES)
-+ */
-+ TALLOC_FREE(fde);
-+ in->broken_inotify = True;
-+ return;
-+ }
-+ if (bufsize == 0) {
- DEBUG(0,("No data on inotify fd?!\n"));
- TALLOC_FREE(fde);
- return;
-@@ -300,6 +308,7 @@ static NTSTATUS inotify_setup(struct sys
- }
- in->ctx = ctx;
- in->watches = NULL;
-+ in->broken_inotify = False;
-
- ctx->private_data = in;
- talloc_set_destructor(in, inotify_destructor);
-@@ -394,6 +403,10 @@ NTSTATUS inotify_watch(struct sys_notify
-
- in = talloc_get_type(ctx->private_data, struct inotify_private);
-
-+ if (in->broken_inotify) {
-+ return NT_STATUS_OK;
-+ }
-+
- mask = inotify_map(e);
- if (mask == 0) {
- /* this filter can't be handled by inotify */