From: Fabio Aiuto <fabioaiuto83@gmail.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: gregkh@linuxfoundation.org, joe@perches.com,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 08/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_cmd.c
Date: Fri, 2 Apr 2021 11:18:53 +0200 [thread overview]
Message-ID: <20210402091852.GA1406@agape.jhs> (raw)
In-Reply-To: <20210402081420.GU2088@kadam>
On Fri, Apr 02, 2021 at 08:14:20AM +0000, Dan Carpenter wrote:
> On Thu, Apr 01, 2021 at 11:51:15PM +0200, Fabio Aiuto wrote:
> > On Thu, Apr 01, 2021 at 05:32:36PM +0300, Dan Carpenter wrote:
> > > On Thu, Apr 01, 2021 at 03:55:37PM +0200, Fabio Aiuto wrote:
> > > >
> > > > Hi Dan,
> > > >
> > > > I have the following:
> > > >
> > > > if (rtw_createbss_cmd(adapter) != _SUCCESS)
> > > > - RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("Error =>rtw_createbss_cmd status FAIL\n"));
> > > > + ;
> > > >
> > > > will I leave
> > > >
> > > > if (rtw_createbss_cmd(adapter) != _SUCCESS)
> > > > ;
> > > >
> > > > or just
> > > >
> > > > rtw_createbss_cmd(adapter);
> > > >
> > > > ?
> > > >
> > > > what's best from the static analysis point of view?
> > > >
> > > > smatch and sparse says nothing about that.
> > >
> > > rtw_createbss_cmd() can only fail if this allocation fails:
> > >
> > > pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
> > >
> > > In current kernels, that size of small allocation will never fail. But
> > > we alway write code as if every allocation can fail.
> > >
> > > Normally when an allocation fails then we want to return -ENOMEM and
> > > clean up. But this code is an event handler for firmware events and
> > > there isn't any real clean up to do. Since there is nothing we can do
> > > then this is basically working and fine.
> > >
> > > How I would write this is:
> > >
> > > ret = rtw_createbss_cmd(adapter);
> > > if (ret != _SUCCESS)
> > > goto unlock;
> > > }
> > > }
> > > unlock:
> > > spin_unlock_bh(&pmlmepriv->lock);
> > > }
> > >
> > > That doesn't change how the code works but it signals to the the reader
> > > what your intention is. If we just remove the error handling then it's
> > > ambiguous.
> > >
> > > rtw_createbss_cmd(adapter);
> > > }
> > > }
> > > <-- Futurue programmer decides to add code here then figuring
> > > that rtw_createbss_cmd() can fail is a problem.
> > >
> > > spin_unlock_bh(&pmlmepriv->lock);
> > > }
> > >
> > > But for something like this which is maybe more subtle than just a
> > > straight delete of lines of code, then consider pulling it out into its
> > > own separate patch. That makes it easier to review. Put all the stuff
> > > that I said in the commit message:
> > >
> > > ---
> > > [PATCH] tidy up some error handling
> > >
> > > The RT_TRACE() output is not useful so we want to delete it. In this
> > > case there is no cleanup for rtw_createbss_cmd() required or even
> > > possible. I've deleted the RT_TRACE() output and added a goto unlock
> > > to show that we can't continue if rtw_createbss_cmd() fails.
> > >
> > > ---
> > >
> > > >
> > > > Checkpatch too seems to ignore it, maybe the first one is good,
> > > > but I would like to be sure before sending another over 40 patches
> > > > long patchset.
> > >
> > > Don't send 40 patches. Just send 10 at a time until you get a better
> > > feel for which ones are going to get applied or not. :P It's not
> > > arbitrary, and I'm definitely not trying to NAK your patches. Once you
> > > learn the rules I hope that it's predictable and straight forward.
> > >
> > > regards,
> > > dan carpenter
> > >
> >
> > Hi Dan,
> >
> > sorry again. In this case:
> >
> > @@ -828,10 +829,11 @@ void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf)
> >
> > pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE;
> >
> > - if (rtw_createbss_cmd(adapter) != _SUCCESS)
> > - ;
> > -
> > pmlmepriv->to_join = false;
> > +
> > + ret = rtw_createbss_cmd(adapter);
> > + if (ret != _SUCCESS)
> > + goto unlock;
> > }
> > }
> >
> > I decided to move the set to false of pmlepriv->to_join before
> > the rtw_createbss_cmd(). In old code that statement was executed
> > unconditionally and seems not to be tied to the failure of
> > rtw_createbss_cmd().
> >
> > The eventual goto would skip this instruction so I moved it
> > before.
> >
> > What do you think?
>
> So when you're sending patches like this which have the potential to
> change the behavior then we want to see your thought process explained a
> bit in the message.
you are right, I skip a lot of steps in the message, next time I will
explain better.
>
> For example, when I'm reviewing patches in my email client, then I don't
> know if rtw_createbss_cmd() uses pmlmepriv->to_join. It turns out it
> doesn't. I also don't know what ->to_join is for really. Your patch
> preserves the original logic, but it's not totally clear that the
> original code was correct. See how it's done in rtw_do_join():
>
> drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
> 107 rtw_generate_random_ibss(pibss);
> 108
> 109 if (rtw_createbss_cmd(padapter) != _SUCCESS) {
> 110 RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("***Error =>do_goin: rtw_createbss_cmd status FAIL***\n "));
> 111 ret = false;
> 112 goto exit;
> 113 }
> 114
> 115 pmlmepriv->to_join = false;
> 116
>
> So you could make an argument that the original code is wrong.
>
> Also rtw_createbss_cmd() can't actually fail.
>
> The other option is to replace that particular RT_TRACE() with a dev_err()
> message. Another option is to just skip that one and come back to it
> later. Maybe the code will be more clear after we have cleaned it up.
>
> It doesn't matter so long as the commit message defends your choice then
> probably we would accept any of these patches.
>
> regards,
> dan carpenter
ok I will leave the logic untouched moving the
pmlmepriv->to_join = false;
before the rtw_create_bss() call, for they not interfere.
thank you,
fabio
next prev parent reply other threads:[~2021-04-02 9:19 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 9:20 [PATCH 00/49] staging: rtl8723bs: remove all RT_TRACE usages Fabio Aiuto
2021-04-01 9:20 ` [PATCH 01/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_xmit.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 02/49] staging: rtl8723bs: remove empty else blocks Fabio Aiuto
2021-04-01 9:20 ` [PATCH 03/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_security.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 04/49] staging: rtl8723bs: remove empty if block " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 05/49] staging: rtl8723bs: remove all RT_TRACE logs in core/rtw_eeprom.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 06/49] staging: rtl8723bs: remove all RT_TRACE logs in core/rtw_pwrctrl.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 07/49] staging: rtl8723bs: make one single if statement out of two nested ones Fabio Aiuto
2021-04-01 9:20 ` [PATCH 08/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_cmd.c Fabio Aiuto
2021-04-01 9:50 ` Dan Carpenter
2021-04-01 10:03 ` Fabio Aiuto
2021-04-01 13:55 ` Fabio Aiuto
2021-04-01 14:32 ` Dan Carpenter
2021-04-01 15:04 ` Fabio Aiuto
2021-04-01 21:51 ` Fabio Aiuto
2021-04-02 8:14 ` Dan Carpenter
2021-04-02 9:18 ` Fabio Aiuto [this message]
2021-04-01 9:20 ` [PATCH 09/49] staging: rtl8723bs: remove empty if-else blocks and unused variable Fabio Aiuto
2021-04-01 9:20 ` [PATCH 10/49] staging: rtl8723bs: remove commented RT_TRACE calls in core/rtw_mlme.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 11/49] staging: rtl8723bs: remove RT_TRACE logs " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 12/49] staging: rtl8723bs: remove empty if-else block " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 13/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_mlme_ext.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 14/49] staging: rtl8723bs: remove commented RT_TRACE calls in core/rtw_recv.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 15/49] staging: rtl8723bs: remove RT_TRACE logs " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 16/49] staging: rtl8723bs: remove empty for cycle " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 17/49] staging: rtl8723bs: remove empty if-block " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 18/49] staging: rtl8723bs: remove commented RT_TRACE call in core/rtw_ioctl_set.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 19/49] staging: rtl8723bs: remove RT_TRACE logs " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 20/49] staging: rtl8723bs: remove empty if-block " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 21/49] staging: rtl8723bs: remove all RT_TRACE logs in core/rtw_wlan_util.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 22/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_sta_mgt.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 23/49] staging: rtl8723bs: remove RT_TRACE logs in core/rtw_ieee80211.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 24/49] staging: rtl8723bs: remove empty for cycles Fabio Aiuto
2021-04-01 9:20 ` [PATCH 25/49] staging: rtl8723bs: remove RT_TRACE logs in hal/HalPwrSeqCmd.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 26/49] staging: rtl8723bs: remove RT_TRACE logs in hal/rtl8723b_hal_init.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 27/49] staging: rtl8723bs: remove empty #ifdef blocks " Fabio Aiuto
2021-04-01 9:20 ` [PATCH 28/49] staging: rtl8723bs: remove empty if blocks in hal/rtl8723bs_hal_init.c Fabio Aiuto
2021-04-01 9:20 ` [PATCH 29/49] staging: rtl8723bs: added driver prefix in log messages Fabio Aiuto
2021-04-01 9:21 ` [PATCH 30/49] staging: rtl8723bs: remove RT_TRACE logs in hal/sdio_ops.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 31/49] staging: rtl8723bs: remove commented code block in hal/hal_com_phycfg.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 32/49] staging: rtl8723bs: remove RT_TRACE logs in hal/rtl8723b_phycfg.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 33/49] staging: rtl8723bs: remove empty else-blocks " Fabio Aiuto
2021-04-01 9:21 ` [PATCH 34/49] staging: rtl8723bs: remove RT_TRACE logs in hal/hal_intf.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 35/49] staging: rtl8723bs: remove RT_TRACE logs in hal/rtl8723bs_xmit.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 36/49] staging: rtl8723bs: remove RT_TRACE logs in hal/sdio_halinit.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 37/49] staging: rtl8723bs: remove RT_TRACE logs in hal/rtl8723bs_recv.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 38/49] staging: rtl8723bs: remove commented RT_TRACE calls in hal/HalPhyRf_8723B.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 39/49] staging: rtl8723bs: remove commented RT_TRACE calls in hal/rtl8723b_rf6052.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 40/49] staging: rtl8723bs: remove commented RT_TRACE calls in os_dep/ioctl_linux.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 41/49] staging: rtl8723bs: remove RT_TRACE logs " Fabio Aiuto
2021-04-01 9:21 ` [PATCH 42/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/mlme_linux.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 43/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/ioctl_cfg80211.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 44/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/recv_linux.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 45/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/sdio_intf.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 46/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/xmit_linux.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 47/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/osdep_service.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 48/49] staging: rtl8723bs: remove RT_TRACE logs in os_dep/os_intfs.c Fabio Aiuto
2021-04-01 9:21 ` [PATCH 49/49] staging: rtl8723bs: remove obsolete macro Fabio Aiuto
2021-04-01 9:57 ` Joe Perches
2021-04-01 10:12 ` Fabio Aiuto
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=20210402091852.GA1406@agape.jhs \
--to=fabioaiuto83@gmail.com \
--cc=dan.carpenter@oracle.com \
--cc=gregkh@linuxfoundation.org \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox