From: Andreas Gruenbacher <agruen@suse.de>

notify_change() gets called with at most the ATTR_MODE flag set for symlinks,
but it should be called with the ATTR_MODE flag cleared.  This triggers a bug
in fs/reiserfs/xattr_acl.c (reiserfs plus acl patches), and perhaps on other
file systems, too.  (On ext2/ext3 symlinks have no ->setattr, there the bug
does not trigger.)

	int
	reiserfs_acl_chmod (struct inode *inode)
	{
        	struct posix_acl *acl, *clone;
	        int error;

==>	        if (S_ISLNK(inode->i_mode))
==>	                return -EOPNOTSUPP;

This is the fix.


---

 25-akpm/fs/nfsd/vfs.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN fs/nfsd/vfs.c~invalid-notify_changesymlink-in-nfsd fs/nfsd/vfs.c
--- 25/fs/nfsd/vfs.c~invalid-notify_changesymlink-in-nfsd	Tue May  4 17:46:55 2004
+++ 25-akpm/fs/nfsd/vfs.c	Tue May  4 17:46:55 2004
@@ -1212,7 +1212,7 @@ nfsd_symlink(struct svc_rqst *rqstp, str
 		if (EX_ISSYNC(fhp->fh_export))
 			nfsd_sync_dir(dentry);
 		if (iap) {
-			iap->ia_valid &= ATTR_MODE /* ~(ATTR_MODE|ATTR_UID|ATTR_GID)*/;
+			iap->ia_valid &= ~ATTR_MODE;
 			if (iap->ia_valid) {
 				iap->ia_valid |= ATTR_CTIME;
 				iap->ia_mode = (iap->ia_mode&S_IALLUGO)

_