lkml.org 
[lkml]   [2009]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectLinux-2.6.31-rc8 inotify hangs samba clients [UPDATED]


Sorry, corrected patch below. Previous one was bad ... I was
messing with.

The first part of commit 0db501bd0610ee0c0aca84d927f90bcccd09e2bd hangs
WinXP clients browsing Linux samba folders ... trying to add a terminating
byte to name_len. Reverting this solves the problem.

The second part of adding zeros is fine.

If we don't revert here, then Samba 3.3.7 will have to change to work with
Linux 2.6.31-rc8, and perhaps other codes as well.

Thanks,
Jeff


Here the patch to revert.


commit 0db501bd0610ee0c0aca84d927f90bcccd09e2bd
Author: Eric W. Biederman <ebiederm@xmission.com>
Date: Thu Aug 27 03:20:04 2009 -0700

inotify: Ensure we alwasy write the terminating NULL.

Before the rewrite copy_event_to_user always wrote a terqminating '\0'
byte to user space after the filename. Since the rewrite that
terminating byte was skipped if your filename is exactly a multiple of
event_size. Ouch!

So add one byte to name_size before we round up and use clear_user to
set userspace to zero like /dev/zero does instead of copying the
strange nul_inotify_event.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: Eric Paris <eparis@redhat.com>

diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index ce1f582..0e781bc 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -199,8 +196,10 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
inotify_free_event_priv(fsn_priv);
}

- /* round up event->name_len so it is a multiple of event_size */
- name_len = roundup(event->name_len, event_size);
+ /* round up event->name_len so it is a multiple of event_size
+ * plus an extra byte for the terminating '\0'.
+ */
+ name_len = roundup(event->name_len + 1, event_size);
inotify_event.len = name_len;

inotify_event.mask = inotify_mask_to_arg(event->mask);

\
 
 \ /
  Last update: 2009-08-28 18:25    [W:0.024 / U:1.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site