All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/iio/chemical/sps30.c:122:30: sparse: cast truncates bits from constant value (8004 becomes 4)
@ 2019-03-14  7:14 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2019-03-14  7:14 UTC (permalink / raw)
  To: Tomasz Duszynski; +Cc: kbuild-all, linux-kernel, Jonathan Cameron

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   fa3d493f7a573b4e4e2538486e912093a0161c1b
commit: 62129a0849d27cc94ced832bcf9dcde283dcbe08 iio: chemical: sps30: allow changing self cleaning period
date:   8 weeks ago
reproduce:
        # apt-get install sparse
        git checkout 62129a0849d27cc94ced832bcf9dcde283dcbe08
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'


sparse warnings: (new ones prefixed by >>)

>> drivers/iio/chemical/sps30.c:122:30: sparse: cast truncates bits from constant value (8004 becomes 4)

vim +122 drivers/iio/chemical/sps30.c

    91	
    92	static int sps30_do_cmd(struct sps30_state *state, u16 cmd, u8 *data, int size)
    93	{
    94		/*
    95		 * Internally sensor stores measurements in a following manner:
    96		 *
    97		 * PM1: upper two bytes, crc8, lower two bytes, crc8
    98		 * PM2P5: upper two bytes, crc8, lower two bytes, crc8
    99		 * PM4: upper two bytes, crc8, lower two bytes, crc8
   100		 * PM10: upper two bytes, crc8, lower two bytes, crc8
   101		 *
   102		 * What follows next are number concentration measurements and
   103		 * typical particle size measurement which we omit.
   104		 */
   105		u8 buf[SPS30_MAX_READ_SIZE] = { cmd >> 8, cmd };
   106		int i, ret = 0;
   107	
   108		switch (cmd) {
   109		case SPS30_START_MEAS:
   110			buf[2] = 0x03;
   111			buf[3] = 0x00;
   112			buf[4] = crc8(sps30_crc8_table, &buf[2], 2, CRC8_INIT_VALUE);
   113			ret = sps30_write_then_read(state, buf, 5, NULL, 0);
   114			break;
   115		case SPS30_STOP_MEAS:
   116		case SPS30_RESET:
   117		case SPS30_START_FAN_CLEANING:
   118			ret = sps30_write_then_read(state, buf, 2, NULL, 0);
   119			break;
   120		case SPS30_READ_AUTO_CLEANING_PERIOD:
   121			buf[0] = SPS30_AUTO_CLEANING_PERIOD >> 8;
 > 122			buf[1] = (u8)SPS30_AUTO_CLEANING_PERIOD;
   123		case SPS30_READ_DATA_READY_FLAG:
   124		case SPS30_READ_DATA:
   125		case SPS30_READ_SERIAL:
   126			/* every two data bytes are checksummed */
   127			size += size / 2;
   128			ret = sps30_write_then_read(state, buf, 2, buf, size);
   129			break;
   130		case SPS30_AUTO_CLEANING_PERIOD:
   131			buf[2] = data[0];
   132			buf[3] = data[1];
   133			buf[4] = crc8(sps30_crc8_table, &buf[2], 2, CRC8_INIT_VALUE);
   134			buf[5] = data[2];
   135			buf[6] = data[3];
   136			buf[7] = crc8(sps30_crc8_table, &buf[5], 2, CRC8_INIT_VALUE);
   137			ret = sps30_write_then_read(state, buf, 8, NULL, 0);
   138			break;
   139		}
   140	
   141		if (ret)
   142			return ret;
   143	
   144		/* validate received data and strip off crc bytes */
   145		for (i = 0; i < size; i += 3) {
   146			u8 crc = crc8(sps30_crc8_table, &buf[i], 2, CRC8_INIT_VALUE);
   147	
   148			if (crc != buf[i + 2]) {
   149				dev_err(&state->client->dev,
   150					"data integrity check failed\n");
   151				return -EIO;
   152			}
   153	
   154			*data++ = buf[i];
   155			*data++ = buf[i + 1];
   156		}
   157	
   158		return 0;
   159	}
   160	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-03-14  7:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-14  7:14 drivers/iio/chemical/sps30.c:122:30: sparse: cast truncates bits from constant value (8004 becomes 4) kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.