|  | @@ -1271,8 +1271,15 @@ static void linda_complete_recv ( struct ib_device *ibdev,
 | 
		
	
		
			
			| 1271 | 1271 |  			/* Completing the eager buffer described in
 | 
		
	
		
			
			| 1272 | 1272 |  			 * this header entry.
 | 
		
	
		
			
			| 1273 | 1273 |  			 */
 | 
		
	
		
			
			| 1274 |  | -			iob_put ( iobuf, payload_len );
 | 
		
	
		
			
			| 1275 |  | -			rc = ( err ? -EIO : ( useegrbfr ? 0 : -ECANCELED ) );
 | 
		
	
		
			
			|  | 1274 | +			if ( payload_len <= iob_tailroom ( iobuf ) ) {
 | 
		
	
		
			
			|  | 1275 | +				iob_put ( iobuf, payload_len );
 | 
		
	
		
			
			|  | 1276 | +				rc = ( err ?
 | 
		
	
		
			
			|  | 1277 | +				       -EIO : ( useegrbfr ? 0 : -ECANCELED ) );
 | 
		
	
		
			
			|  | 1278 | +			} else {
 | 
		
	
		
			
			|  | 1279 | +				DBGC ( linda, "Linda %p bad payload len %zd\n",
 | 
		
	
		
			
			|  | 1280 | +				       linda, payload_len );
 | 
		
	
		
			
			|  | 1281 | +				rc = -EPROTO;
 | 
		
	
		
			
			|  | 1282 | +			}
 | 
		
	
		
			
			| 1276 | 1283 |  			/* Redirect to target QP if necessary */
 | 
		
	
		
			
			| 1277 | 1284 |  			if ( qp != intended_qp ) {
 | 
		
	
		
			
			| 1278 | 1285 |  				DBGC ( linda, "Linda %p redirecting QPN %ld "
 | 
		
	
	
		
			
			|  | @@ -1283,7 +1290,7 @@ static void linda_complete_recv ( struct ib_device *ibdev,
 | 
		
	
		
			
			| 1283 | 1290 |  				intended_qp->recv.fill++;
 | 
		
	
		
			
			| 1284 | 1291 |  			}
 | 
		
	
		
			
			| 1285 | 1292 |  			ib_complete_recv ( ibdev, intended_qp, &dest, &source,
 | 
		
	
		
			
			| 1286 |  | -					   iobuf, rc);
 | 
		
	
		
			
			|  | 1293 | +					   iobuf, rc );
 | 
		
	
		
			
			| 1287 | 1294 |  		} else {
 | 
		
	
		
			
			| 1288 | 1295 |  			/* Completing on a skipped-over eager buffer */
 | 
		
	
		
			
			| 1289 | 1296 |  			ib_complete_recv ( ibdev, qp, &dest, &source, iobuf,
 |