@@ -1416,7 +1416,7 @@ svc_process_common(struct svc_rqst *rqstp)
1416
1416
/* Only RPCv2 supported */
1417
1417
xdr_stream_encode_u32 (xdr , RPC_VERSION );
1418
1418
xdr_stream_encode_u32 (xdr , RPC_VERSION );
1419
- goto sendit ;
1419
+ return 1 ; /* don't wrap */
1420
1420
1421
1421
err_bad_auth :
1422
1422
dprintk ("svc: authentication failed (%d)\n" ,
@@ -1432,15 +1432,20 @@ svc_process_common(struct svc_rqst *rqstp)
1432
1432
err_bad_prog :
1433
1433
dprintk ("svc: unknown program %d\n" , rqstp -> rq_prog );
1434
1434
serv -> sv_stats -> rpcbadfmt ++ ;
1435
- xdr_stream_encode_u32 ( xdr , RPC_PROG_UNAVAIL ) ;
1435
+ * rqstp -> rq_accept_statp = rpc_prog_unavail ;
1436
1436
goto sendit ;
1437
1437
1438
1438
err_bad_vers :
1439
1439
svc_printk (rqstp , "unknown version (%d for prog %d, %s)\n" ,
1440
1440
rqstp -> rq_vers , rqstp -> rq_prog , progp -> pg_name );
1441
1441
1442
1442
serv -> sv_stats -> rpcbadfmt ++ ;
1443
- xdr_stream_encode_u32 (xdr , RPC_PROG_MISMATCH );
1443
+ * rqstp -> rq_accept_statp = rpc_prog_mismatch ;
1444
+
1445
+ /*
1446
+ * svc_authenticate() has already added the verifier and
1447
+ * advanced the stream just past rq_accept_statp.
1448
+ */
1444
1449
xdr_stream_encode_u32 (xdr , process .mismatch .lovers );
1445
1450
xdr_stream_encode_u32 (xdr , process .mismatch .hivers );
1446
1451
goto sendit ;
@@ -1449,19 +1454,19 @@ svc_process_common(struct svc_rqst *rqstp)
1449
1454
svc_printk (rqstp , "unknown procedure (%d)\n" , rqstp -> rq_proc );
1450
1455
1451
1456
serv -> sv_stats -> rpcbadfmt ++ ;
1452
- xdr_stream_encode_u32 ( xdr , RPC_PROC_UNAVAIL ) ;
1457
+ * rqstp -> rq_accept_statp = rpc_proc_unavail ;
1453
1458
goto sendit ;
1454
1459
1455
1460
err_garbage_args :
1456
1461
svc_printk (rqstp , "failed to decode RPC header\n" );
1457
1462
1458
1463
serv -> sv_stats -> rpcbadfmt ++ ;
1459
- xdr_stream_encode_u32 ( xdr , RPC_GARBAGE_ARGS ) ;
1464
+ * rqstp -> rq_accept_statp = rpc_garbage_args ;
1460
1465
goto sendit ;
1461
1466
1462
1467
err_system_err :
1463
1468
serv -> sv_stats -> rpcbadfmt ++ ;
1464
- xdr_stream_encode_u32 ( xdr , RPC_SYSTEM_ERR ) ;
1469
+ * rqstp -> rq_accept_statp = rpc_system_err ;
1465
1470
goto sendit ;
1466
1471
}
1467
1472
0 commit comments