aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-12-31 13:59:21 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-31 13:59:21 -0500
commit89ba52bd933898e8da78d4a3469dc23cb8acbecd (patch)
tree0d2ece1a60e17bdcf6a39bc58e8412ddc0cc7d6a
parentc76f2a2c4c348e2de94b7ba10fcd3640a35d04fa (diff)
parent94f65193abbc07e4a4f3dbe3729ceb95c1493ea2 (diff)
Merge branch 'sctp_logspam'
Neil Horman says: ==================== sctp: Consolidate and ratelimit deprecation warnings The SCTP protocol has several deprecation warnings in its setsockopt path that can be triggered by unprivlidged users. Since these are not ratelimited, we can spam the logs quite easily here. Since these are all deprecation warnings, and that type of warning isn't uncommon in the rest of the kernel, lets make a common pr_warn_deprecated macro to produce somewhat generalized ratelimited deprecation warnings easily ==================== Signed-off-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/printk.h7
-rw-r--r--net/sctp/socket.c30
2 files changed, 25 insertions, 12 deletions
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 694925837a16..26fb95ce5080 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -88,6 +88,13 @@ struct va_format {
88#define HW_ERR "[Hardware Error]: " 88#define HW_ERR "[Hardware Error]: "
89 89
90/* 90/*
91 * DEPRECATED
92 * Add this to a message whenever you want to warn user space about the use
93 * of a deprecated aspect of an API so they can stop using it
94 */
95#define DEPRECATED "[Deprecated]: "
96
97/*
91 * Dummy printk for disabled debugging statements to use whilst maintaining 98 * Dummy printk for disabled debugging statements to use whilst maintaining
92 * gcc's format and side-effect checking. 99 * gcc's format and side-effect checking.
93 */ 100 */
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index adc5e3779b29..e9c5121e0fbf 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2578,8 +2578,9 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk,
2578 if (params.sack_delay == 0 && params.sack_freq == 0) 2578 if (params.sack_delay == 0 && params.sack_freq == 0)
2579 return 0; 2579 return 0;
2580 } else if (optlen == sizeof(struct sctp_assoc_value)) { 2580 } else if (optlen == sizeof(struct sctp_assoc_value)) {
2581 pr_warn("Use of struct sctp_assoc_value in delayed_ack socket option deprecated\n"); 2581 pr_warn_ratelimited(DEPRECATED
2582 pr_warn("Use struct sctp_sack_info instead\n"); 2582 "Use of struct sctp_assoc_value in delayed_ack socket option.\n"
2583 "Use struct sctp_sack_info instead\n");
2583 if (copy_from_user(&params, optval, optlen)) 2584 if (copy_from_user(&params, optval, optlen))
2584 return -EFAULT; 2585 return -EFAULT;
2585 2586
@@ -2994,8 +2995,9 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned
2994 int val; 2995 int val;
2995 2996
2996 if (optlen == sizeof(int)) { 2997 if (optlen == sizeof(int)) {
2997 pr_warn("Use of int in maxseg socket option deprecated\n"); 2998 pr_warn_ratelimited(DEPRECATED
2998 pr_warn("Use struct sctp_assoc_value instead\n"); 2999 "Use of int in maxseg socket option.\n"
3000 "Use struct sctp_assoc_value instead\n");
2999 if (copy_from_user(&val, optval, optlen)) 3001 if (copy_from_user(&val, optval, optlen))
3000 return -EFAULT; 3002 return -EFAULT;
3001 params.assoc_id = 0; 3003 params.assoc_id = 0;
@@ -3252,8 +3254,9 @@ static int sctp_setsockopt_maxburst(struct sock *sk,
3252 int assoc_id = 0; 3254 int assoc_id = 0;
3253 3255
3254 if (optlen == sizeof(int)) { 3256 if (optlen == sizeof(int)) {
3255 pr_warn("Use of int in max_burst socket option deprecated\n"); 3257 pr_warn_ratelimited(DEPRECATED
3256 pr_warn("Use struct sctp_assoc_value instead\n"); 3258 "Use of int in max_burst socket option deprecated.\n"
3259 "Use struct sctp_assoc_value instead\n");
3257 if (copy_from_user(&val, optval, optlen)) 3260 if (copy_from_user(&val, optval, optlen))
3258 return -EFAULT; 3261 return -EFAULT;
3259 } else if (optlen == sizeof(struct sctp_assoc_value)) { 3262 } else if (optlen == sizeof(struct sctp_assoc_value)) {
@@ -4573,8 +4576,9 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
4573 if (copy_from_user(&params, optval, len)) 4576 if (copy_from_user(&params, optval, len))
4574 return -EFAULT; 4577 return -EFAULT;
4575 } else if (len == sizeof(struct sctp_assoc_value)) { 4578 } else if (len == sizeof(struct sctp_assoc_value)) {
4576 pr_warn("Use of struct sctp_assoc_value in delayed_ack socket option deprecated\n"); 4579 pr_warn_ratelimited(DEPRECATED
4577 pr_warn("Use struct sctp_sack_info instead\n"); 4580 "Use of struct sctp_assoc_value in delayed_ack socket option.\n"
4581 "Use struct sctp_sack_info instead\n");
4578 if (copy_from_user(&params, optval, len)) 4582 if (copy_from_user(&params, optval, len))
4579 return -EFAULT; 4583 return -EFAULT;
4580 } else 4584 } else
@@ -5218,8 +5222,9 @@ static int sctp_getsockopt_maxseg(struct sock *sk, int len,
5218 struct sctp_association *asoc; 5222 struct sctp_association *asoc;
5219 5223
5220 if (len == sizeof(int)) { 5224 if (len == sizeof(int)) {
5221 pr_warn("Use of int in maxseg socket option deprecated\n"); 5225 pr_warn_ratelimited(DEPRECATED
5222 pr_warn("Use struct sctp_assoc_value instead\n"); 5226 "Use of int in maxseg socket option.\n"
5227 "Use struct sctp_assoc_value instead\n");
5223 params.assoc_id = 0; 5228 params.assoc_id = 0;
5224 } else if (len >= sizeof(struct sctp_assoc_value)) { 5229 } else if (len >= sizeof(struct sctp_assoc_value)) {
5225 len = sizeof(struct sctp_assoc_value); 5230 len = sizeof(struct sctp_assoc_value);
@@ -5310,8 +5315,9 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len,
5310 struct sctp_association *asoc; 5315 struct sctp_association *asoc;
5311 5316
5312 if (len == sizeof(int)) { 5317 if (len == sizeof(int)) {
5313 pr_warn("Use of int in max_burst socket option deprecated\n"); 5318 pr_warn_ratelimited(DEPRECATED
5314 pr_warn("Use struct sctp_assoc_value instead\n"); 5319 "Use of int in max_burst socket option.\n"
5320 "Use struct sctp_assoc_value instead\n");
5315 params.assoc_id = 0; 5321 params.assoc_id = 0;
5316 } else if (len >= sizeof(struct sctp_assoc_value)) { 5322 } else if (len >= sizeof(struct sctp_assoc_value)) {
5317 len = sizeof(struct sctp_assoc_value); 5323 len = sizeof(struct sctp_assoc_value);