Skip to contentSkip to conversation

nvmem: Add a simple NVMEM framework for consumers

DISCUSSION Dan Carpenter 2 participants 2 messages Aug 14, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hello Srinivas Kandagatla,

The patch 69aba7948cbe: "nvmem: Add a simple NVMEM framework for consumers" from Jul 27, 2015, leads to the following static checker warning:

	drivers/nvmem/core.c:827 __nvmem_cell_read()
	warn: we tested 'cell->bit_offset' before and it was 'false'

drivers/nvmem/core.c
816 static int __nvmem_cell_read(struct nvmem_device *nvmem,
817 struct nvmem_cell *cell,
818 void *buf, size_t *len)
819 {
820 int rc;
821
822 rc = regmap_raw_read(nvmem->regmap, cell->offset, buf, cell->bytes);
823
824 if (IS_ERR_VALUE(rc))
825 return rc;
826
827 /* shift bits in-place */
828 if (cell->bit_offset || cell->bit_offset)

                    ^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^

Looks like a copy and paste bug. Maybe something else was intended?

   829                  nvmem_shift_read_buffer_in_place(cell, buf);
   830  
   831          *len = cell->bytes;
   832  
   833          return 0;
   834  }

regards,
dan carpenter

#1 lore raw

Thanks Dan,

for reporting this.

Quoted 24 lines · Dan Carpenter

Hello Srinivas Kandagatla,

The patch 69aba7948cbe: "nvmem: Add a simple NVMEM framework for consumers" from Jul 27, 2015, leads to the following static checker warning:

	drivers/nvmem/core.c:827 __nvmem_cell_read()
	warn: we tested 'cell->bit_offset' before and it was 'false'

drivers/nvmem/core.c

    816  static int __nvmem_cell_read(struct nvmem_device *nvmem,
    817                        struct nvmem_cell *cell,
    818                        void *buf, size_t *len)
    819  {
    820          int rc;
    821
    822          rc = regmap_raw_read(nvmem->regmap, cell->offset, buf, cell->bytes);
    823
    824          if (IS_ERR_VALUE(rc))
    825                  return rc;
    826
    827          /* shift bits in-place */
    828          if (cell->bit_offset || cell->bit_offset)
                     ^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^
Quoted 1 line

Looks like a copy and paste bug. Maybe something else was intended?

Yes, its a copy paste error, I can be fixed by below patch which am going to send to Greg to pick up.

------------------>snip<-------------------------

Author: Srinivas Kandagatla <[email protected]>
Date:   Fri Aug 14 11:00:57 2015 +0100

nvmem: core: fix a copy paste error

This patch fixes a copy paste error in a check which is performed to determine if the cell is specified in bits or not.

drivers/nvmem/core.c +1 -1
index 35a42bb..ea0d6fd 100644
@@ -825,7 +825,7 @@ static int __nvmem_cell_read(struct nvmem_device *nvmem,
                 return rc;
 
         /* shift bits in-place */
-       if (cell->bit_offset || cell->bit_offset)
+       if (cell->bit_offset || cell->nbits)
                 nvmem_shift_read_buffer_in_place(cell, buf);
 
         *len = cell->bytes;

------------------>snip<-------------------------

--srini

Quoted 12 lines
    829                  nvmem_shift_read_buffer_in_place(cell, buf);
    830
    831          *len = cell->bytes;
    832
    833          return 0;
    834  }

regards,
dan carpenter