mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] Invalid notify_change(symlink, [ATTR_MODE]) in nfsd
@ 2004-05-04 14:56 Andreas Gruenbacher
  0 siblings, 0 replies; only message in thread
From: Andreas Gruenbacher @ 2004-05-04 14:56 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: lkml, Olaf Kirch

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 -- please apply.

Index: linux-2.6.6-rc3/fs/nfsd/vfs.c
===================================================================
--- linux-2.6.6-rc3.orig/fs/nfsd/vfs.c
+++ linux-2.6.6-rc3/fs/nfsd/vfs.c
@@ -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)


Cheers,
-- 
Andreas Gruenbacher <agruen@suse.de>
SUSE Labs, SUSE LINUX AG


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-05-04 15:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-04 14:56 [PATCH] Invalid notify_change(symlink, [ATTR_MODE]) in nfsd Andreas Gruenbacher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®