[Natty][SRU][PATCH 0/2] eCryptfs: Clear i_nlink in rmdir

Colin King colin.king at canonical.com
Fri Mar 2 17:08:31 UTC 2012


From: Colin Ian King <colin.king at canonical.com>

Note: This is a re-posting (I forgot to request it for Natty).
I originally requested these for Lucid but they also apply cleanly
and fix the issue for Natty too.

SRU Justification:

The IN_DELETE_SELF mask for inotify_add_watch indicates that an event
should be emitted when the watched path is deleted, however, this does
not happen on an eCryptfs mount. 

To reproduce:

mkdir upper lower
sudo mount -t ecryptfs lower upper

and compile and run the following test program in the upper directory:

https://launchpadlibrarian.net/64953109/inotify.c

This test program hangs waiting for the IN_DELETE_SELF event that never
occurs.

Fix: the following two patches address the bug. The first patch removes
and an unnecessary d_delete from ecryptfs_rmdir.  The second patch clears
the inode's i_nlink after a successful vfs_rmdir() on the lower directory.
Without the second patch inode evict and destroy paths are missed and
hence IN_DELETE_SELF inotify events do not occur.

With the fix, the test inotify program receives the IN_DELETE_SELF event
and completes.

https://bugs.launchpad.net/bugs/723518

These patches are clean cherry picks of upstream commits
35ffa948b2f7bdf79e488cd496232935d095087a and
07850552b92b3637fa56767b5e460b4238014447

Tyler Hicks (2):
  eCryptfs: Remove extra d_delete in ecryptfs_rmdir
  eCryptfs: Clear i_nlink in rmdir

 fs/ecryptfs/inode.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)





More information about the kernel-team mailing list