linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH
@ 2015-10-02 15:47 Trond Myklebust
  2015-10-02 15:57 ` kbuild test robot
  0 siblings, 1 reply; 3+ messages in thread
From: Trond Myklebust @ 2015-10-02 15:47 UTC (permalink / raw)
  To: linux-nfs

We need to warn against broken NFSv4.1 servers that try to hand out
delegations in response to NFS4_OPEN_CLAIM_DELEG_CUR_FH.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
---
 fs/nfs/nfs4proc.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index f93b9cdb4934..56b0958b940f 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1458,12 +1458,16 @@ nfs4_opendata_check_deleg(struct nfs4_opendata *data, struct nfs4_state *state)
 	if (delegation)
 		delegation_flags = delegation->flags;
 	rcu_read_unlock();
-	if (data->o_arg.claim == NFS4_OPEN_CLAIM_DELEGATE_CUR) {
+	switch (data->o_arg.claim) {
+	case NFS4_OPEN_CLAIM_DELEGATE_CUR:
+	case NFS4_OPEN_CLAIM_DELEG_CUR_FH:
 		pr_err_ratelimited("NFS: Broken NFSv4 server %s is "
 				   "returning a delegation for "
 				   "OPEN(CLAIM_DELEGATE_CUR)\n",
 				   clp->cl_hostname);
-	} else if ((delegation_flags & 1UL<<NFS_DELEGATION_NEED_RECLAIM) == 0)
+		return;
+	}
+	if ((delegation_flags & 1UL<<NFS_DELEGATION_NEED_RECLAIM) == 0)
 		nfs_inode_set_delegation(state->inode,
 					 data->owner->so_cred,
 					 &data->o_res);
-- 
2.4.3


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

* Re: [PATCH] NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH
  2015-10-02 15:47 [PATCH] NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH Trond Myklebust
@ 2015-10-02 15:57 ` kbuild test robot
  2015-10-02 16:39   ` [PATCH v2] " Trond Myklebust
  0 siblings, 1 reply; 3+ messages in thread
From: kbuild test robot @ 2015-10-02 15:57 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: kbuild-all, linux-nfs

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

Hi Trond,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please ignore]

config: m68k-sun3_defconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=m68k 

All warnings (new ones prefixed by >>):

   fs/nfs/nfs4proc.c: In function 'nfs4_opendata_check_deleg':
>> fs/nfs/nfs4proc.c:1461:2: warning: enumeration value 'NFS4_OPEN_CLAIM_NULL' not handled in switch [-Wswitch]
     switch (data->o_arg.claim) {
     ^
>> fs/nfs/nfs4proc.c:1461:2: warning: enumeration value 'NFS4_OPEN_CLAIM_PREVIOUS' not handled in switch [-Wswitch]
>> fs/nfs/nfs4proc.c:1461:2: warning: enumeration value 'NFS4_OPEN_CLAIM_DELEGATE_PREV' not handled in switch [-Wswitch]
>> fs/nfs/nfs4proc.c:1461:2: warning: enumeration value 'NFS4_OPEN_CLAIM_FH' not handled in switch [-Wswitch]
>> fs/nfs/nfs4proc.c:1461:2: warning: enumeration value 'NFS4_OPEN_CLAIM_DELEG_PREV_FH' not handled in switch [-Wswitch]

vim +/NFS4_OPEN_CLAIM_NULL +1461 fs/nfs/nfs4proc.c

  1445		atomic_inc(&state->count);
  1446		return state;
  1447	}
  1448	
  1449	static void
  1450	nfs4_opendata_check_deleg(struct nfs4_opendata *data, struct nfs4_state *state)
  1451	{
  1452		struct nfs_client *clp = NFS_SERVER(state->inode)->nfs_client;
  1453		struct nfs_delegation *delegation;
  1454		int delegation_flags = 0;
  1455	
  1456		rcu_read_lock();
  1457		delegation = rcu_dereference(NFS_I(state->inode)->delegation);
  1458		if (delegation)
  1459			delegation_flags = delegation->flags;
  1460		rcu_read_unlock();
> 1461		switch (data->o_arg.claim) {
  1462		case NFS4_OPEN_CLAIM_DELEGATE_CUR:
  1463		case NFS4_OPEN_CLAIM_DELEG_CUR_FH:
  1464			pr_err_ratelimited("NFS: Broken NFSv4 server %s is "
  1465					   "returning a delegation for "
  1466					   "OPEN(CLAIM_DELEGATE_CUR)\n",
  1467					   clp->cl_hostname);
  1468			return;
  1469		}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 10998 bytes --]

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

* [PATCH v2] NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH
  2015-10-02 15:57 ` kbuild test robot
@ 2015-10-02 16:39   ` Trond Myklebust
  0 siblings, 0 replies; 3+ messages in thread
From: Trond Myklebust @ 2015-10-02 16:39 UTC (permalink / raw)
  To: linux-nfs

We need to warn against broken NFSv4.1 servers that try to hand out
delegations in response to NFS4_OPEN_CLAIM_DELEG_CUR_FH.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
---
 fs/nfs/nfs4proc.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index f93b9cdb4934..12e9808d5df0 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1458,12 +1458,18 @@ nfs4_opendata_check_deleg(struct nfs4_opendata *data, struct nfs4_state *state)
 	if (delegation)
 		delegation_flags = delegation->flags;
 	rcu_read_unlock();
-	if (data->o_arg.claim == NFS4_OPEN_CLAIM_DELEGATE_CUR) {
+	switch (data->o_arg.claim) {
+	default:
+		break;
+	case NFS4_OPEN_CLAIM_DELEGATE_CUR:
+	case NFS4_OPEN_CLAIM_DELEG_CUR_FH:
 		pr_err_ratelimited("NFS: Broken NFSv4 server %s is "
 				   "returning a delegation for "
 				   "OPEN(CLAIM_DELEGATE_CUR)\n",
 				   clp->cl_hostname);
-	} else if ((delegation_flags & 1UL<<NFS_DELEGATION_NEED_RECLAIM) == 0)
+		return;
+	}
+	if ((delegation_flags & 1UL<<NFS_DELEGATION_NEED_RECLAIM) == 0)
 		nfs_inode_set_delegation(state->inode,
 					 data->owner->so_cred,
 					 &data->o_res);
-- 
2.4.3


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

end of thread, other threads:[~2015-10-02 16:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-02 15:47 [PATCH] NFSv4.1: nfs4_opendata_check_deleg needs to handle NFS4_OPEN_CLAIM_DELEG_CUR_FH Trond Myklebust
2015-10-02 15:57 ` kbuild test robot
2015-10-02 16:39   ` [PATCH v2] " Trond Myklebust

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).