Re: [PATCH net-next 2/9] net: netconsole: split send_ext_msg_udp() function

Simon Horman
2024-09-04T10:55:50Z

On Tue, Sep 03, 2024 at 07:07:45AM -0700, Breno Leitao wrote:
> The send_ext_msg_udp() function has become quite large, currently
> spanning 102 lines. Its complexity, along with extensive pointer and
> offset manipulation, makes it difficult to read and error-prone.
>
> The function has evolved over time, and it’s now due for a refactor.
>
> To improve readability and maintainability, isolate the case where no
> message fragmentation occurs into a separate function, into a new
> send_msg_no_fragmentation() function. This scenario covers about 95% of
> the messages.
>
> Signed-off-by: Breno Leitao <leitao@debian.org>

Thanks,

The nit below aside this looks good to me.

Reviewed-by: Simon Horman <horms@kernel.org>

> @@ -1090,23 +1116,8 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg,
> release_len = strlen(release) + 1;
> }
>
> - if (msg_len + release_len + userdata_len <= MAX_PRINT_CHUNK) {
> - /* No fragmentation needed */
> - if (nt->release) {
> - scnprintf(buf, MAX_PRINT_CHUNK, "%s,%s", release, msg);
> - msg_len += release_len;
> - } else {
> - memcpy(buf, msg, msg_len);
> - }
> -
> - if (userdata)
> - msg_len += scnprintf(&buf[msg_len],
> - MAX_PRINT_CHUNK - msg_len,
> - "%s", userdata);
> -
> - netpoll_send_udp(&nt->np, buf, msg_len);
> - return;
> - }
> + if (msg_len + release_len + userdata_len <= MAX_PRINT_CHUNK)
> + return send_msg_no_fragmentation(nt, msg, userdata, msg_len, release_len);

nit: This appears to be fixed in the following patch,
but the above line could be wrapped here.

>
> /* need to insert extra header fields, detect header and body */
> header = msg;
> --
> 2.43.5
>