diff options
author | Wei Yongjun <yjwei@cn.fujitsu.com> | 2007-08-26 23:19:24 -0400 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-08-30 13:52:56 -0400 |
commit | d99fa42963a5ae394cf1df9d5bb739eb378a189b (patch) | |
tree | cfbad786d1115135ce7fc61ffef83018feadaa5b | |
parent | 00f1c2df2a1c4903f4daa1333bafeb6dcbc9591d (diff) |
SCTP: Use net_ratelimit to suppress error messages print too fast
When multi bundling SHUTDOWN-ACK message is received in ESTAB state,
this will cause "sctp protocol violation state" message print many times.
If SHUTDOWN-ACK is bundled 300 times in one packet, message will be
print 300 times. The same problem also exists when received unexpected
HEARTBEAT-ACK message which is bundled message times.
This patch used net_ratelimit() to suppress error messages print too fast.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
-rw-r--r-- | net/sctp/sm_sideeffect.c | 5 | ||||
-rw-r--r-- | net/sctp/sm_statefuns.c | 26 |
2 files changed, 17 insertions, 14 deletions
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 1907318e70f1..8d7890083493 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
@@ -1013,8 +1013,9 @@ static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, | |||
1013 | break; | 1013 | break; |
1014 | 1014 | ||
1015 | case SCTP_DISPOSITION_VIOLATION: | 1015 | case SCTP_DISPOSITION_VIOLATION: |
1016 | printk(KERN_ERR "sctp protocol violation state %d " | 1016 | if (net_ratelimit()) |
1017 | "chunkid %d\n", state, subtype.chunk); | 1017 | printk(KERN_ERR "sctp protocol violation state %d " |
1018 | "chunkid %d\n", state, subtype.chunk); | ||
1018 | break; | 1019 | break; |
1019 | 1020 | ||
1020 | case SCTP_DISPOSITION_NOT_IMPL: | 1021 | case SCTP_DISPOSITION_NOT_IMPL: |
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 350d47654720..276e26d3d7da 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -1032,19 +1032,21 @@ sctp_disposition_t sctp_sf_backbeat_8_3(const struct sctp_endpoint *ep, | |||
1032 | /* This should never happen, but lets log it if so. */ | 1032 | /* This should never happen, but lets log it if so. */ |
1033 | if (unlikely(!link)) { | 1033 | if (unlikely(!link)) { |
1034 | if (from_addr.sa.sa_family == AF_INET6) { | 1034 | if (from_addr.sa.sa_family == AF_INET6) { |
1035 | printk(KERN_WARNING | 1035 | if (net_ratelimit()) |
1036 | "%s association %p could not find address " | 1036 | printk(KERN_WARNING |
1037 | NIP6_FMT "\n", | 1037 | "%s association %p could not find address " |
1038 | __FUNCTION__, | 1038 | NIP6_FMT "\n", |
1039 | asoc, | 1039 | __FUNCTION__, |
1040 | NIP6(from_addr.v6.sin6_addr)); | 1040 | asoc, |
1041 | NIP6(from_addr.v6.sin6_addr)); | ||
1041 | } else { | 1042 | } else { |
1042 | printk(KERN_WARNING | 1043 | if (net_ratelimit()) |
1043 | "%s association %p could not find address " | 1044 | printk(KERN_WARNING |
1044 | NIPQUAD_FMT "\n", | 1045 | "%s association %p could not find address " |
1045 | __FUNCTION__, | 1046 | NIPQUAD_FMT "\n", |
1046 | asoc, | 1047 | __FUNCTION__, |
1047 | NIPQUAD(from_addr.v4.sin_addr.s_addr)); | 1048 | asoc, |
1049 | NIPQUAD(from_addr.v4.sin_addr.s_addr)); | ||
1048 | } | 1050 | } |
1049 | return SCTP_DISPOSITION_DISCARD; | 1051 | return SCTP_DISPOSITION_DISCARD; |
1050 | } | 1052 | } |