Re: [Outreachy kernel] Re: [PATCH v6] staging: xgifb: correct the multiple line dereference

From: Julia Lawall
Date: Tue Feb 28 2017 - 03:45:56 EST




On Tue, 28 Feb 2017, Arushi Singhal wrote:

>
>
> On Tue, Feb 28, 2017 at 11:21 AM, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Feb 28, 2017 at 10:35:30AM +0530, Arushi Singhal wrote:
> > Error reported by checkpatch.pl as "avoid multiple line dereference".
> > Addition of new variables to make the code more readable and also to
> > correct about mentioned error as by itroducing new variables line is
> > not exceeding 80 characters.
> >
> > Signed-off-by: Arushi Singhal <arushisinghal19971997@xxxxxxxxx>
> > ---
> > changes in v6
> >Â Â- changes done such that no other errors can generate.
> >Â Â- Improve the coding style.
> >Â Â- Introduced new variables.
> >Â Â- type of the variable is changed.
> >
> >Â drivers/staging/xgifb/XGI_main_26.c | 29 ++++++-----------------------
> > drivers/staging/xgifb/vb_setmode.c | 17 +++++++++++------
> >Â 2 files changed, 17 insertions(+), 29 deletions(-)
> >
> > diff --git a/drivers/staging/xgifb/XGI_main_26.c b/drivers/staging/xgifb/XGI_main_26.c
> > index 69ed137337ce..9870ea3b76b4 100644
> > --- a/drivers/staging/xgifb/XGI_main_26.c
> > +++ b/drivers/staging/xgifb/XGI_main_26.c
> > @@ -878,30 +878,13 @@ static void XGIfb_post_setmode(struct xgifb_video_info *xgifb_info)
> >Â Â Â Â Â Â Â Â Â Â Â Â}
> >
> >Â Â Â Â Â Â Â Â Â Â Â Âif ((filter >= 0) && (filter <= 7)) {
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âconst u8 *f = XGI_TV_filter[filter_tb].filter[filter];
> >Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âpr_debug("FilterTable[%d]-%d: %*ph\n",
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â filter_tb, filter,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 4, XGI_TV_filter[filter_tb].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â filter[filter]);
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂXGIPART2,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â0x35,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â(XGI_TV_filter[filter_tb].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âfilter[filter][0]));
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂXGIPART2,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â0x36,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â(XGI_TV_filter[filter_tb].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âfilter[filter][1]));
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂXGIPART2,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â0x37,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â(XGI_TV_filter[filter_tb].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âfilter[filter][2]));
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂXGIPART2,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â0x38,
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â(XGI_TV_filter[filter_tb].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âfilter[filter][3]));
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â filter_tb, filter, 4, f);
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(XGIPART2, 0x35, f[0]);
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(XGIPART2, 0x36, f[1]);
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(XGIPART2, 0x37, f[2]);
> > +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âxgifb_reg_set(XGIPART2, 0x38, f[3]);
> >Â Â Â Â Â Â Â Â Â Â Â Â}
> >Â Â Â Â Â Â Â Â}
> >Â Â Â Â}
> > diff --git a/drivers/staging/xgifb/vb_setmode.c b/drivers/staging/xgifb/vb_setmode.c
> > index 7c7c8c8f1df3..249a32804c06 100644
> > --- a/drivers/staging/xgifb/vb_setmode.c
> > +++ b/drivers/staging/xgifb/vb_setmode.c
> > @@ -221,8 +221,11 @@ static unsigned char XGI_AjustCRT2Rate(unsigned short ModeIdIndex,
> >
> >Â Â Â Âfor (; XGI330_RefIndex[RefreshRateTableIndex + (*i)].ModeID ==
> >Â Â Â Â Â Â Â tempbx; (*i)--) {
> > -Â Â Â Â Â Â Âinfoflag = XGI330_RefIndex[RefreshRateTableIndex + (*i)].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂExt_InfoFlag;
> > +Â Â Â Â Â Â Âunsigned short j;
> > +
> > +Â Â Â Â Â Â Âj = XGI330_RefIndex[RefreshRateTableIndex + (*i)].Ext_InfoFlag;
> > +Â Â Â Â Â Â Âinfoflag = j;
> > +
> >Â Â Â Â Â Â Â Âif (infoflag & tempax)
> >Â Â Â Â Â Â Â Â Â Â Â Âreturn 1;
>
>
> Why are you using a temporary variable 'j' here? It's not needed at
> all, and just is confusing to read the code now, don't you agree?
>
>
> I am using temporary variable of small size(character) so that when
> I fixed the multiple line dereference then the line number of characters in a line will
> not increase by 80.

I agree with Greg that this is not a readable solution. Putting the whole
thing on one line would be better, even if it goes over 80 characters.
Having the field on a line by itself is much worse, because then it looks
like a variable name - one doesn't easily see the connection to the
structure. Hopefully someone will come up with a shorter name for
RefreshRateTableIndex and then the problem will be completely solved.
Maybe ref_table_index? Although to me ref looks like reference, not
refresh...

julia

> Â
> > @@ -231,8 +234,11 @@ static unsigned char XGI_AjustCRT2Rate(unsigned short ModeIdIndex,
> >Â Â Â Â}0
> >
> >Â Â Â Âfor ((*i) = 0;; (*i)++) {
> > -Â Â Â Â Â Â Âinfoflag = XGI330_RefIndex[RefreshRateTableIndex + (*i)].
> > -Â Â Â Â Â Â Â Â Â Â Â Â Â Â ÂExt_InfoFlag;
> > +Â Â Â Â Â Â Âunsigned short m;
> > +
> > +Â Â Â Â Â Â Âm = XGI330_RefIndex[RefreshRateTableIndex + (*i)].Ext_InfoFlag;
> > +Â Â Â Â Â Â Âinfoflag = m;
> > +
> >Â Â Â Â Â Â Â Âif (XGI330_RefIndex[RefreshRateTableIndex + (*i)].ModeID
> >Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â!= tempbx) {
> >Â Â Â Â Â Â Â Â Â Â Â Âreturn 0;
>
> Same here, why add a new variable that isn't used more than once? You
> are trying to work around something that doesn't make sense to work
> around.
>
> Same reason as above.
> Thanks
> Arushi
> Â
> Remember, coding style cleanups are to be done to make the code easier
> to understand and follow. Not to blindly follow a perl script that
> can not think. Sometimes it is not right...
>
> thanks,
>
> greg k-h
>
>
>
> Â
>
> --
> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@xxxxxxxxxxxxxxxxx
> To post to this group, send email to outreachy-kernel@xxxxxxxxxxxxxxxxx
> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CA%2BXqjF9B9dNXb0q2aZTeWMuLPSXh4mqi8LYNyxGvp1%3DvHw3HYQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
>
>