net/sched: act_pedit: rate limit datapath messages
authorPedro Tammela <pctammela@mojatatu.com>
Fri, 21 Apr 2023 21:25:17 +0000 (18:25 -0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 23 Apr 2023 17:35:27 +0000 (18:35 +0100)
Unbounded info messages in the pedit datapath can flood the printk
ring buffer quite easily depending on the action created.
As these messages are informational, usually printing some, not all,
is enough to bring attention to the real issue.

Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_pedit.c

index 2fec4473d800703087704c93162da1f2e204ed9e..fb93d4c1faca643adf86cbe898ec877f7f00ea4b 100644 (file)
@@ -396,8 +396,8 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
                        u8 *d, _d;
 
                        if (!offset_valid(skb, hoffset + tkey->at)) {
-                               pr_info("tc action pedit 'at' offset %d out of bounds\n",
-                                       hoffset + tkey->at);
+                               pr_info_ratelimited("tc action pedit 'at' offset %d out of bounds\n",
+                                                   hoffset + tkey->at);
                                goto bad;
                        }
                        d = skb_header_pointer(skb, hoffset + tkey->at,
@@ -407,14 +407,13 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
 
                        offset += (*d & tkey->offmask) >> tkey->shift;
                        if (offset % 4) {
-                               pr_info("tc action pedit offset must be on 32 bit boundaries\n");
+                               pr_info_ratelimited("tc action pedit offset must be on 32 bit boundaries\n");
                                goto bad;
                        }
                }
 
                if (!offset_valid(skb, hoffset + offset)) {
-                       pr_info("tc action pedit offset %d out of bounds\n",
-                               hoffset + offset);
+                       pr_info_ratelimited("tc action pedit offset %d out of bounds\n", hoffset + offset);
                        goto bad;
                }
 
@@ -431,8 +430,7 @@ TC_INDIRECT_SCOPE int tcf_pedit_act(struct sk_buff *skb,
                        val = (*ptr + tkey->val) & ~tkey->mask;
                        break;
                default:
-                       pr_info("tc action pedit bad command (%d)\n",
-                               cmd);
+                       pr_info_ratelimited("tc action pedit bad command (%d)\n", cmd);
                        goto bad;
                }