LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2
@ 2008-02-02  1:34 Oliver Pinter (Pintér Olivér)
  2008-02-06 23:05 ` Oliver Pinter
  0 siblings, 1 reply; 2+ messages in thread
From: Oliver Pinter (Pintér Olivér) @ 2008-02-02  1:34 UTC (permalink / raw)
  To: Linux Kernel, stable, stable-commits
  Cc: chrisw, Greg KH, Willy Tarreau, Adrian Bunk, Roland,
	Andreas Gruenbacher, J. Bruce Fields

[-- Attachment #1: Type: text/plain, Size: 71 bytes --]

mainline: ac8587dcb58e40dd336d99d60f852041e06cc3dd

-- 
Thanks,
Oliver

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: nfsacl-retval.diff --]
[-- Type: text/x-diff; name=nfsacl-retval.diff, Size: 1707 bytes --]

From: J. Bruce Fields <bfields@citi.umich.edu>
Date: Fri, 2 Nov 2007 15:36:08 -0400
Subject: [PATCH] knfsd: fix spurious EINVAL errors on first access of new filesystem
References: 340873

The v2/v3 acl code in nfsd is translating any return from fh_verify() to
nfserr_inval.  This is particularly unfortunate in the case of an
nfserr_dropit return, which is an internal error meant to indicate to
callers that this request has been deferred and should just be dropped
pending the results of an upcall to mountd.

Thanks to Roland <devzero@web.de> for bug report and data collection.

Cc: Roland <devzero@web.de>
Acked-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

Index: linux-2.6.23/fs/nfsd/nfs2acl.c
===================================================================
--- linux-2.6.23.orig/fs/nfsd/nfs2acl.c
+++ linux-2.6.23/fs/nfsd/nfs2acl.c
@@ -41,7 +41,7 @@ static __be32 nfsacld_proc_getacl(struct
 
 	fh = fh_copy(&resp->fh, &argp->fh);
 	if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
-		RETURN_STATUS(nfserr_inval);
+		RETURN_STATUS(nfserr);
 
 	if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
 		RETURN_STATUS(nfserr_inval);
Index: linux-2.6.23/fs/nfsd/nfs3acl.c
===================================================================
--- linux-2.6.23.orig/fs/nfsd/nfs3acl.c
+++ linux-2.6.23/fs/nfsd/nfs3acl.c
@@ -37,7 +37,7 @@ static __be32 nfsd3_proc_getacl(struct s
 
 	fh = fh_copy(&resp->fh, &argp->fh);
 	if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
-		RETURN_STATUS(nfserr_inval);
+		RETURN_STATUS(nfserr);
 
 	if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
 		RETURN_STATUS(nfserr_inval);

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2
  2008-02-02  1:34 [2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2 Oliver Pinter (Pintér Olivér)
@ 2008-02-06 23:05 ` Oliver Pinter
  0 siblings, 0 replies; 2+ messages in thread
From: Oliver Pinter @ 2008-02-06 23:05 UTC (permalink / raw)
  To: Linux Kernel, stable, stable-commits

From: J. Bruce Fields <bfields@citi.umich.edu>
Date: Fri, 2 Nov 2007 15:36:08 -0400
Subject: [PATCH] knfsd: fix spurious EINVAL errors on first access of
new filesystem
References: 340873

The v2/v3 acl code in nfsd is translating any return from fh_verify() to
nfserr_inval.  This is particularly unfortunate in the case of an
nfserr_dropit return, which is an internal error meant to indicate to
callers that this request has been deferred and should just be dropped
pending the results of an upcall to mountd.

Thanks to Roland <devzero@web.de> for bug report and data collection.

Cc: Roland <devzero@web.de>
Acked-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

Index: linux-2.6.23/fs/nfsd/nfs2acl.c
===================================================================
--- linux-2.6.23.orig/fs/nfsd/nfs2acl.c
+++ linux-2.6.23/fs/nfsd/nfs2acl.c
@@ -41,7 +41,7 @@ static __be32 nfsacld_proc_getacl(struct

 	fh = fh_copy(&resp->fh, &argp->fh);
 	if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
-		RETURN_STATUS(nfserr_inval);
+		RETURN_STATUS(nfserr);

 	if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
 		RETURN_STATUS(nfserr_inval);
Index: linux-2.6.23/fs/nfsd/nfs3acl.c
===================================================================
--- linux-2.6.23.orig/fs/nfsd/nfs3acl.c
+++ linux-2.6.23/fs/nfsd/nfs3acl.c
@@ -37,7 +37,7 @@ static __be32 nfsd3_proc_getacl(struct s

 	fh = fh_copy(&resp->fh, &argp->fh);
 	if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
-		RETURN_STATUS(nfserr_inval);
+		RETURN_STATUS(nfserr);

 	if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
 		RETURN_STATUS(nfserr_inval);


On 2/2/08, Oliver Pinter (Pintér Olivér) <oliver.pntr@gmail.com> wrote:
> mainline: ac8587dcb58e40dd336d99d60f852041e06cc3dd
>
> --
> Thanks,
> Oliver
>


-- 
Thanks,
Oliver

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-02-06 23:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-02  1:34 [2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2 Oliver Pinter (Pintér Olivér)
2008-02-06 23:05 ` Oliver Pinter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).