RE: [PATCH][next] tipc: remove redundant assignment to ret, simplify code

From: Tung Quang Nguyen
Date: Thu Apr 11 2024 - 07:42:47 EST


>On Thu, Apr 11, 2024 at 11:04:15AM +0000, Tung Quang Nguyen wrote:
>> >Subject: Re: [PATCH][next] tipc: remove redundant assignment to ret,
>> >simplify code
>> >
>> >On 11/04/2024 11:31, Dan Carpenter wrote:
>> >> On Thu, Apr 11, 2024 at 10:04:10AM +0000, Tung Quang Nguyen wrote:
>> >>>>
>> >>> I suggest that err variable should be completely removed. Could
>> >>> you please also do the same thing for this code ?
>> >>> "
>> >>> ...
>> >>> err = skb_handler(skb, cb, tsk);
>> >>> if (err) {
>> >>
>> >> If we write the code as:
>> >>
>> >> if (some_function(parameters)) {
>> >>
>> >> then at first that looks like a boolean. People probably think the
>> >> function returns true/false. But if we leave it as-is:
>> >>
>> >> err = some_function(parameters);
>> >> if (err) {
>> >>
>> >> Then that looks like error handling.
>> >>
>> >> So it's better and more readable to leave it as-is.
>> >>
>> >> regards,
>> >> dan carpenter
>> >
>> >I concur with Dan's comments.
>> >
>> >Colin
>> I have a different view.
>> It does not make sense to me to use stack variable 'err' just for
>> checking return code of the functions (__tipc_nl_add_sk/
>> __tipc_add_sock_diag) that we know always return true on error.
>>
>
>I think you are trying to mirco optimize the code at the expense of readability. It is unnecessary.
I do not see any issue with readability when doing so.

>The compiler is smart enough to
>generate the same code either way. I have just tested this on my system and it is true.
>
Yeah, I do not deny that. The obvious thing I can see is using err is a redundant thing.

>$ md5sum net/tipc/socket.o.*
>f5ebea97eeb9736c5b8097158c2b12e5 net/tipc/socket.o.without_var
>f5ebea97eeb9736c5b8097158c2b12e5 net/tipc/socket.o.with_var $
>
>When you're doing these tests, you need to ensure that the line numbers do change so I have commented out the old lines instead of
>deleting them.
>
>regards,
>dan carpenter
>
>diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 7e4135db5816..879a8a9786b0 100644
>--- a/net/tipc/socket.c
>+++ b/net/tipc/socket.c
>@@ -3560,24 +3560,21 @@ int tipc_nl_sk_walk(struct sk_buff *skb, struct netlink_callback *cb, {
> struct rhashtable_iter *iter = (void *)cb->args[4];
> struct tipc_sock *tsk;
>- int err;
>+// int err;
>
> rhashtable_walk_start(iter);
> while ((tsk = rhashtable_walk_next(iter)) != NULL) {
> if (IS_ERR(tsk)) {
>- err = PTR_ERR(tsk);
>- if (err == -EAGAIN) {
>- err = 0;
>+ if (PTR_ERR(tsk) == -EAGAIN)
> continue;
>- }
> break;
> }
>
> sock_hold(&tsk->sk);
> rhashtable_walk_stop(iter);
> lock_sock(&tsk->sk);
>- err = skb_handler(skb, cb, tsk);
>- if (err) {
>+// err = skb_handler(skb, cb, tsk);
>+ if (skb_handler(skb, cb, tsk)) {
> release_sock(&tsk->sk);
> sock_put(&tsk->sk);
> goto out;
>