diff options
Diffstat (limited to 'net/sunrpc/svc.c')
-rw-r--r-- | net/sunrpc/svc.c | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index 55ea6df069d..a4a6bf7deaa 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c | |||
@@ -777,6 +777,30 @@ svc_register(struct svc_serv *serv, int proto, unsigned short port) | |||
777 | } | 777 | } |
778 | 778 | ||
779 | /* | 779 | /* |
780 | * Printk the given error with the address of the client that caused it. | ||
781 | */ | ||
782 | static int | ||
783 | __attribute__ ((format (printf, 2, 3))) | ||
784 | svc_printk(struct svc_rqst *rqstp, const char *fmt, ...) | ||
785 | { | ||
786 | va_list args; | ||
787 | int r; | ||
788 | char buf[RPC_MAX_ADDRBUFLEN]; | ||
789 | |||
790 | if (!net_ratelimit()) | ||
791 | return 0; | ||
792 | |||
793 | printk(KERN_WARNING "svc: %s: ", | ||
794 | svc_print_addr(rqstp, buf, sizeof(buf))); | ||
795 | |||
796 | va_start(args, fmt); | ||
797 | r = vprintk(fmt, args); | ||
798 | va_end(args); | ||
799 | |||
800 | return r; | ||
801 | } | ||
802 | |||
803 | /* | ||
780 | * Process the RPC request. | 804 | * Process the RPC request. |
781 | */ | 805 | */ |
782 | int | 806 | int |
@@ -963,14 +987,13 @@ svc_process(struct svc_rqst *rqstp) | |||
963 | return 0; | 987 | return 0; |
964 | 988 | ||
965 | err_short_len: | 989 | err_short_len: |
966 | if (net_ratelimit()) | 990 | svc_printk(rqstp, "short len %Zd, dropping request\n", |
967 | printk("svc: short len %Zd, dropping request\n", argv->iov_len); | 991 | argv->iov_len); |
968 | 992 | ||
969 | goto dropit; /* drop request */ | 993 | goto dropit; /* drop request */ |
970 | 994 | ||
971 | err_bad_dir: | 995 | err_bad_dir: |
972 | if (net_ratelimit()) | 996 | svc_printk(rqstp, "bad direction %d, dropping request\n", dir); |
973 | printk("svc: bad direction %d, dropping request\n", dir); | ||
974 | 997 | ||
975 | serv->sv_stats->rpcbadfmt++; | 998 | serv->sv_stats->rpcbadfmt++; |
976 | goto dropit; /* drop request */ | 999 | goto dropit; /* drop request */ |
@@ -1000,8 +1023,7 @@ err_bad_prog: | |||
1000 | goto sendit; | 1023 | goto sendit; |
1001 | 1024 | ||
1002 | err_bad_vers: | 1025 | err_bad_vers: |
1003 | if (net_ratelimit()) | 1026 | svc_printk(rqstp, "unknown version (%d for prog %d, %s)\n", |
1004 | printk("svc: unknown version (%d for prog %d, %s)\n", | ||
1005 | vers, prog, progp->pg_name); | 1027 | vers, prog, progp->pg_name); |
1006 | 1028 | ||
1007 | serv->sv_stats->rpcbadfmt++; | 1029 | serv->sv_stats->rpcbadfmt++; |
@@ -1011,16 +1033,14 @@ err_bad_vers: | |||
1011 | goto sendit; | 1033 | goto sendit; |
1012 | 1034 | ||
1013 | err_bad_proc: | 1035 | err_bad_proc: |
1014 | if (net_ratelimit()) | 1036 | svc_printk(rqstp, "unknown procedure (%d)\n", proc); |
1015 | printk("svc: unknown procedure (%d)\n", proc); | ||
1016 | 1037 | ||
1017 | serv->sv_stats->rpcbadfmt++; | 1038 | serv->sv_stats->rpcbadfmt++; |
1018 | svc_putnl(resv, RPC_PROC_UNAVAIL); | 1039 | svc_putnl(resv, RPC_PROC_UNAVAIL); |
1019 | goto sendit; | 1040 | goto sendit; |
1020 | 1041 | ||
1021 | err_garbage: | 1042 | err_garbage: |
1022 | if (net_ratelimit()) | 1043 | svc_printk(rqstp, "failed to decode args\n"); |
1023 | printk("svc: failed to decode args\n"); | ||
1024 | 1044 | ||
1025 | rpc_stat = rpc_garbage_args; | 1045 | rpc_stat = rpc_garbage_args; |
1026 | err_bad: | 1046 | err_bad: |