From: Lance Yang <lance.yang@linux.dev>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [bug report] netfilter: load nf_log_syslog on enabling nf_conntrack_log_invalid
Date: Mon, 4 Aug 2025 18:04:50 +0800 [thread overview]
Message-ID: <a20cb422-9eca-4a41-9087-28cd608483fa@linux.dev> (raw)
In-Reply-To: <c401288b-e2de-42a7-8e04-abd08daa112a@linux.dev>
On 2025/8/4 17:57, Lance Yang wrote:
>
>
> On 2025/8/4 17:24, Dan Carpenter wrote:
>> On Mon, Aug 04, 2025 at 05:05:32PM +0800, Lance Yang wrote:
>>>
>>>
>>> On 2025/8/4 16:21, Dan Carpenter wrote:
>>>> Hello Lance Yang,
>>>>
>>>> Commit e89a68046687 ("netfilter: load nf_log_syslog on enabling
>>>> nf_conntrack_log_invalid") from May 26, 2025 (linux-next), leads to
>>>> the following Smatch static checker warning:
>>>>
>>>> net/netfilter/nf_conntrack_standalone.c:575
>>>> nf_conntrack_log_invalid_sysctl()
>>>> warn: missing error code? 'ret'
>>>
>>> Thanks for pointing this out!
>>>
>>>>
>>>> net/netfilter/nf_conntrack_standalone.c
>>>> 559 static int
>>>> 560 nf_conntrack_log_invalid_sysctl(const struct ctl_table
>>>> *table, int write,
>>>> 561 void *buffer, size_t
>>>> *lenp, loff_t *ppos)
>>>> 562 {
>>>> 563 int ret, i;
>>>> 564
>>>> 565 ret = proc_dou8vec_minmax(table, write, buffer,
>>>> lenp, ppos);
>>>> 566 if (ret < 0 || !write)
>>>> 567 return ret;
>>>> 568
>>>> 569 if (*(u8 *)table->data == 0)
>>>> 570 return ret;
>>>>
>>>> return 0?
>>>
>>> That's a good question. proc_dou8vec_minmax() returns 0 on a successful
>>> write. So when a user writes '0' to disable the feature, ret is
>>> already 0.
>>> Returning it is the correct behavior to signal success.
>>>
>>>>
>>>> 571
>>>> 572 /* Load nf_log_syslog only if no logger is
>>>> currently registered */
>>>> 573 for (i = 0; i < NFPROTO_NUMPROTO; i++) {
>>>> 574 if (nf_log_is_registered(i))
>>>> --> 575 return ret;
>>>>
>>>> This feels like it should be return -EBUSY? Or potentially return 0.
>>>
>>> We simply return ret (which is 0) to signal success, as no further
>>> action
>>> (like loading the nf_log_syslog module) is needed.
>>>
>>>>
>>>> 576 }
>>>> 577 request_module("%s", "nf_log_syslog");
>>>> 578
>>>> 579 return ret;
>>>>
>>>> return 0.
>>>
>>> It's 0 as well.
>>>
>>> Emm... do you know a way to make the Smatch static checker happy?
>>>
>>
>> Returning 0 would make the code so much more clear. Readers probably
>
> Yep, I see your point ;)
>
>> assume that proc_dou8vec_minmax() returns positive values on success
>
> IIUC, proc_dou8vec_minmax only returns 0 for success or a negative
> error code, so there's no positive value case here ...
Correction:
IIUC, proc_dou8vec_minmax only returns 0 for success or a negative
error code on a write, so there's no positive value case here ...
>
>> and that's why we are returning ret. I know that I had to check.
>>
>
> It should make the code clearer and also make the Smatch checker happy:
>
> ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
> - if (ret < 0 || !write)
> + if (ret != 0 || !write)
> return ret;
>
> By checking for "ret != 0", it becomes explicit that ret can only be
> zero after that. wdyt?
>
> Also, if you'd like, please feel free to send a patch for it ;p
>
> Thanks,
> Lance
>
next prev parent reply other threads:[~2025-08-04 10:04 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-04 8:21 [bug report] netfilter: load nf_log_syslog on enabling nf_conntrack_log_invalid Dan Carpenter
2025-08-04 9:05 ` Lance Yang
2025-08-04 9:24 ` Dan Carpenter
2025-08-04 9:57 ` Lance Yang
2025-08-04 10:04 ` Lance Yang [this message]
2025-08-04 10:10 ` Dan Carpenter
2025-08-04 10:24 ` Lance Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a20cb422-9eca-4a41-9087-28cd608483fa@linux.dev \
--to=lance.yang@linux.dev \
--cc=dan.carpenter@linaro.org \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.