Commit 94f65193 authored by Neil Horman's avatar Neil Horman Committed by David S. Miller

SCTP: Reduce log spamming for sctp setsockopt

During a recent discussion regarding some sctp socket options, it was noted that
we have several points at which we issue log warnings that can be flooded at an
unbounded rate by any user.  Fix this by converting all the pr_warns in the
sctp_setsockopt path to be pr_warn_ratelimited.

Note there are several debug level messages as well.  I'm leaving those alone,
as, if you turn on pr_debug, you likely want lots of verbosity.
Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
CC: Vlad Yasevich <vyasevich@gmail.com>
CC: David Miller <davem@davemloft.net>
CC: netdev@vger.kernel.org
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0a9a8bfd
...@@ -2578,8 +2578,9 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk, ...@@ -2578,8 +2578,9 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk,
if (params.sack_delay == 0 && params.sack_freq == 0) if (params.sack_delay == 0 && params.sack_freq == 0)
return 0; return 0;
} else if (optlen == sizeof(struct sctp_assoc_value)) { } else if (optlen == sizeof(struct sctp_assoc_value)) {
pr_warn("Use of struct sctp_assoc_value in delayed_ack socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_sack_info instead\n"); "Use of struct sctp_assoc_value in delayed_ack socket option.\n"
"Use struct sctp_sack_info instead\n");
if (copy_from_user(&params, optval, optlen)) if (copy_from_user(&params, optval, optlen))
return -EFAULT; return -EFAULT;
...@@ -2994,8 +2995,9 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned ...@@ -2994,8 +2995,9 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned
int val; int val;
if (optlen == sizeof(int)) { if (optlen == sizeof(int)) {
pr_warn("Use of int in maxseg socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_assoc_value instead\n"); "Use of int in maxseg socket option.\n"
"Use struct sctp_assoc_value instead\n");
if (copy_from_user(&val, optval, optlen)) if (copy_from_user(&val, optval, optlen))
return -EFAULT; return -EFAULT;
params.assoc_id = 0; params.assoc_id = 0;
...@@ -3252,8 +3254,9 @@ static int sctp_setsockopt_maxburst(struct sock *sk, ...@@ -3252,8 +3254,9 @@ static int sctp_setsockopt_maxburst(struct sock *sk,
int assoc_id = 0; int assoc_id = 0;
if (optlen == sizeof(int)) { if (optlen == sizeof(int)) {
pr_warn("Use of int in max_burst socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_assoc_value instead\n"); "Use of int in max_burst socket option deprecated.\n"
"Use struct sctp_assoc_value instead\n");
if (copy_from_user(&val, optval, optlen)) if (copy_from_user(&val, optval, optlen))
return -EFAULT; return -EFAULT;
} else if (optlen == sizeof(struct sctp_assoc_value)) { } else if (optlen == sizeof(struct sctp_assoc_value)) {
...@@ -4573,8 +4576,9 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len, ...@@ -4573,8 +4576,9 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
if (copy_from_user(&params, optval, len)) if (copy_from_user(&params, optval, len))
return -EFAULT; return -EFAULT;
} else if (len == sizeof(struct sctp_assoc_value)) { } else if (len == sizeof(struct sctp_assoc_value)) {
pr_warn("Use of struct sctp_assoc_value in delayed_ack socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_sack_info instead\n"); "Use of struct sctp_assoc_value in delayed_ack socket option.\n"
"Use struct sctp_sack_info instead\n");
if (copy_from_user(&params, optval, len)) if (copy_from_user(&params, optval, len))
return -EFAULT; return -EFAULT;
} else } else
...@@ -5218,8 +5222,9 @@ static int sctp_getsockopt_maxseg(struct sock *sk, int len, ...@@ -5218,8 +5222,9 @@ static int sctp_getsockopt_maxseg(struct sock *sk, int len,
struct sctp_association *asoc; struct sctp_association *asoc;
if (len == sizeof(int)) { if (len == sizeof(int)) {
pr_warn("Use of int in maxseg socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_assoc_value instead\n"); "Use of int in maxseg socket option.\n"
"Use struct sctp_assoc_value instead\n");
params.assoc_id = 0; params.assoc_id = 0;
} else if (len >= sizeof(struct sctp_assoc_value)) { } else if (len >= sizeof(struct sctp_assoc_value)) {
len = sizeof(struct sctp_assoc_value); len = sizeof(struct sctp_assoc_value);
...@@ -5310,8 +5315,9 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len, ...@@ -5310,8 +5315,9 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len,
struct sctp_association *asoc; struct sctp_association *asoc;
if (len == sizeof(int)) { if (len == sizeof(int)) {
pr_warn("Use of int in max_burst socket option deprecated\n"); pr_warn_ratelimited(DEPRECATED
pr_warn("Use struct sctp_assoc_value instead\n"); "Use of int in max_burst socket option.\n"
"Use struct sctp_assoc_value instead\n");
params.assoc_id = 0; params.assoc_id = 0;
} else if (len >= sizeof(struct sctp_assoc_value)) { } else if (len >= sizeof(struct sctp_assoc_value)) {
len = sizeof(struct sctp_assoc_value); len = sizeof(struct sctp_assoc_value);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment