Re: [PATCH] Staging:comedi:cb_pcidas64=>Fixed check patch warnings

From: Joe Perches
Date: Sun Dec 18 2016 - 12:30:48 EST


On Sun, 2016-12-18 at 15:43 +0530, devendra sharma wrote:
> Fixed check patch warnings about multiple line dereferencing
[].
> diff --git a/drivers/staging/comedi/drivers/cb_pcidas64.c b/drivers/staging/comedi/drivers/cb_pcidas64.c
[]
> @@ -2476,18 +2475,15 @@ static int setup_channel_queue(struct comedi_device *dev,
> for (i = 0; i < cmd->chanlist_len; i++) {
> bits = 0;
> /* set channel */
> - bits |= adc_chan_bits(CR_CHAN(cmd->
> - chanlist[i]));
> + bits |= adc_chan_bits(
> + CR_CHAN(cmd->chanlist[i]));
> /* set gain */
> bits |= ai_range_bits_6xxx(dev,
> - CR_RANGE(cmd->
> - chanlist
> - [i]));
> + CR_RANGE(cmd->chanlist[i]));
> /* set single-ended / differential */
> bits |= se_diff_bit_6xxx(dev,
> - CR_AREF(cmd->
> - chanlist[i]) ==
> - AREF_DIFF);
> + CR_AREF(cmd->chanlist[i]) ==
> + AREF_DIFF);
> if (CR_AREF(cmd->chanlist[i]) == AREF_COMMON)
> bits |= ADC_COMMON_BIT;
> /* mark end of queue */

This would be better handled by using a temporary like:

  for (i = 0; i < cmd->chanlist_len; i++) {
<type> list = cmd->chanlist[i];

/* set channel */
bits |= adc_chan_bits(CR_CHAN(list));
/* set gain */
bits |= ai_range_bmts_6xxx(dev, CR_RANGE(list));
/* set single-ended / differential */
bits |= se_diff_bit_6xxx(dev,
CR_AREF(list) == AREF_DIFF);
if (CR_AREF(list) == AREF_COMMON)
bits |= ADC_COMMON_BIT;

Or moving the indented block into a separate function.