Skip to content

Commit e1a8cc8

Browse files
authored
hb_rf_eth: use dev_err_ratelimited to prevent kernel log flooding (#563)
When the HB-RF-ETH device becomes unreachable, the send thread continues attempting to transmit packets while the receive thread enters a reconnection loop. Each failed send attempt logs "Error sending packet, not connected" with no rate limiting. In production, this was observed to generate thousands of kernel messages per second, causing: - journald to report "Missed 3020 kernel messages" - System becoming unresponsive - VM requiring hard restart This patch applies dev_err_ratelimited() to all error messages that could potentially be triggered in rapid succession: - "No free send buffers" (queue overflow) - "Received to small UDP packet" (malformed packets) - "Received UDP packet with invalid checksum" (corruption) - "Error %d on receiving packet" (receive failures) - "Error sending packet, not connected" (disconnection - critical) The kernel's default rate limiting (typically 10 messages per 5 seconds) prevents log flooding while still providing diagnostic information.
1 parent f46a8ea commit e1a8cc8

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

kernel/hb_rf_eth.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ static void hb_rf_eth_queue_msg(char cmd, char *buffer, size_t len)
134134
}
135135
else
136136
{
137-
dev_err(dev, "No free send buffers\n");
137+
dev_err_ratelimited(dev, "No free send buffers\n");
138138
}
139139

140140
spin_unlock(&queue_write_lock);
@@ -158,18 +158,18 @@ static int hb_rf_eth_recv_packet(struct socket *sock, char *buffer, size_t buffe
158158
{
159159
if (len < 4)
160160
{
161-
dev_err(dev, "Received to small UDP packet\n");
161+
dev_err_ratelimited(dev, "Received to small UDP packet\n");
162162
return -EPROTO;
163163
}
164164
if (*((uint16_t *)(buffer + len - 2)) != (uint16_t)(htons(hb_rf_eth_calc_crc(buffer, len - 2))))
165165
{
166-
dev_err(dev, "Received UDP packet with invalid checksum\n");
166+
dev_err_ratelimited(dev, "Received UDP packet with invalid checksum\n");
167167
return -EPROTO;
168168
}
169169
}
170170
else if (len != 0 && len != -EAGAIN)
171171
{
172-
dev_err(dev, "Error %d on receiving packet\n", len);
172+
dev_err_ratelimited(dev, "Error %d on receiving packet\n", len);
173173
}
174174

175175
return len;
@@ -228,7 +228,7 @@ static void hb_rf_eth_send_msg(struct socket *sock, char *buffer, size_t len)
228228
}
229229
else
230230
{
231-
dev_err(dev, "Error sending packet, not connected\n");
231+
dev_err_ratelimited(dev, "Error sending packet, not connected\n");
232232
}
233233
}
234234

0 commit comments

Comments
 (0)