linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Fabio Aiuto <fabioaiuto83@gmail.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 08:14:20 +0000 (UTC)	[thread overview]
Message-ID: <20210402081420.GU2088@kadam> (raw)
In-Reply-To: <20210401215114.GA15992@agape.jhs>

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.

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

  reply	other threads:[~2021-04-02  8:14 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 [this message]
2021-04-02  9:18             ` Fabio Aiuto
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=20210402081420.GU2088@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=fabioaiuto83@gmail.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;
as well as URLs for NNTP newsgroup(s).