mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	NFSv4.x: Enforce the ca_maxresponsesize_cached on the back channel
We have no duplicate reply cache, so we always set the back channel ca_maxresponsesize_cached to zero when negotiating the session. That means we should always error out as soon as we see the server set args->csa_cachethis. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
		
							parent
							
								
									f74a834a0e
								
							
						
					
					
						commit
						80f9642724
					
				
					 1 changed files with 6 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -381,9 +381,8 @@ validate_seqid(struct nfs4_slot_table *tbl, struct cb_sequenceargs * args)
 | 
			
		|||
		if (args->csa_cachethis == 0)
 | 
			
		||||
			return htonl(NFS4ERR_RETRY_UNCACHED_REP);
 | 
			
		||||
 | 
			
		||||
		/* The ca_maxresponsesize_cached is 0 with no DRC */
 | 
			
		||||
		else if (args->csa_cachethis == 1)
 | 
			
		||||
			return htonl(NFS4ERR_REP_TOO_BIG_TO_CACHE);
 | 
			
		||||
		/* Liar! We never allowed you to set csa_cachethis != 0 */
 | 
			
		||||
		return htonl(NFS4ERR_SEQ_FALSE_RETRY);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Wraparound */
 | 
			
		||||
| 
						 | 
				
			
			@ -500,6 +499,10 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args,
 | 
			
		|||
 | 
			
		||||
	cps->slotid = args->csa_slotid;
 | 
			
		||||
 | 
			
		||||
	/* The ca_maxresponsesize_cached is 0 with no DRC */
 | 
			
		||||
	if (args->csa_cachethis != 0)
 | 
			
		||||
		return htonl(NFS4ERR_REP_TOO_BIG_TO_CACHE);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Check for pending referring calls.  If a match is found, a
 | 
			
		||||
	 * related callback was received before the response to the original
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue