aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei Yongjun <yjwei@cn.fujitsu.com>2007-08-26 23:19:24 -0400
committerVlad Yasevich <vladislav.yasevich@hp.com>2007-08-30 13:52:56 -0400
commitd99fa42963a5ae394cf1df9d5bb739eb378a189b (patch)
treecfbad786d1115135ce7fc61ffef83018feadaa5b
parent00f1c2df2a1c4903f4daa1333bafeb6dcbc9591d (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.c5
-rw-r--r--net/sctp/sm_statefuns.c26
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 }