lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202508130917.FKIv8K4Z-lkp@intel.com>
Date: Wed, 13 Aug 2025 09:28:55 +0800
From: kernel test robot <lkp@...el.com>
To: Alexander Smirnov <asmirnou@...efeat.co.uk>, mchehab@...nel.org,
	robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org
Cc: oe-kbuild-all@...ts.linux.dev, devicetree@...r.kernel.org,
	linux-media@...r.kernel.org, linux-kernel@...r.kernel.org,
	Aliaksandr Smirnou <support@...efeat.co.uk>
Subject: Re: [PATCH v2 2/2] media/i2c: Pinefeat cef168 lens control board
 driver

Hi Alexander,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 2b38afce25c4e1b8f943ff4f0a2b51d6c40f2ed2]

url:    https://github.com/intel-lab-lkp/linux/commits/Alexander-Smirnov/dt-bindings-Pinefeat-cef168-lens-control-board/20250812-053441
base:   2b38afce25c4e1b8f943ff4f0a2b51d6c40f2ed2
patch link:    https://lore.kernel.org/r/20250811213102.15703-3-aliaksandr.smirnou%40gmail.com
patch subject: [PATCH v2 2/2] media/i2c: Pinefeat cef168 lens control board driver
config: arm64-randconfig-r132-20250813 (https://download.01.org/0day-ci/archive/20250813/202508130917.FKIv8K4Z-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 12.5.0
reproduce: (https://download.01.org/0day-ci/archive/20250813/202508130917.FKIv8K4Z-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508130917.FKIv8K4Z-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/media/i2c/cef168.c:37:13: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __le16 [usertype] @@
   drivers/media/i2c/cef168.c:37:13: sparse:     expected unsigned short [usertype] val
   drivers/media/i2c/cef168.c:37:13: sparse:     got restricted __le16 [usertype]
>> drivers/media/i2c/cef168.c:76:32: sparse: sparse: cast to restricted __le16
>> drivers/media/i2c/cef168.c:76:32: sparse: sparse: cast to restricted __le16
>> drivers/media/i2c/cef168.c:76:32: sparse: sparse: cast to restricted __le16
>> drivers/media/i2c/cef168.c:76:32: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:77:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:77:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:77:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:77:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:78:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:78:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:78:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:78:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:79:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:79:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:79:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:79:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:80:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:80:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:80:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:80:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:81:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:81:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:81:39: sparse: sparse: cast to restricted __le16
   drivers/media/i2c/cef168.c:81:39: sparse: sparse: cast to restricted __le16
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32
>> drivers/media/i2c/cef168.c:133:30: sparse: sparse: cast to restricted __le32

vim +37 drivers/media/i2c/cef168.c

    31	
    32	static int cef168_i2c_write(struct cef168_device *cef168_dev, u8 cmd, u16 val)
    33	{
    34		struct i2c_client *client = v4l2_get_subdevdata(&cef168_dev->sd);
    35		int retry, ret;
    36	
  > 37		val = cpu_to_le16(val);
    38		char tx_data[4] = { cmd, (val & 0xff), (val >> 8) };
    39	
    40		tx_data[3] = crc8(cef168_crc8_table, tx_data, 3, CRC8_INIT_VALUE);
    41	
    42		for (retry = 0; retry < 3; retry++) {
    43			ret = i2c_master_send(client, tx_data, sizeof(tx_data));
    44			if (ret == sizeof(tx_data))
    45				return 0;
    46			else if (ret != -EIO && ret != -EREMOTEIO)
    47				break;
    48		}
    49	
    50		dev_err(&client->dev, "I2C write fail after %d retries, ret=%d\n",
    51			retry, ret);
    52		return -EIO;
    53	}
    54	
    55	static int cef168_i2c_read(struct cef168_device *cef168_dev,
    56				   struct cef168_data *rx_data)
    57	{
    58		struct i2c_client *client = v4l2_get_subdevdata(&cef168_dev->sd);
    59	
    60		int ret = i2c_master_recv(client, (char *)rx_data,
    61					  sizeof(struct cef168_data));
    62		if (ret != sizeof(struct cef168_data)) {
    63			dev_err(&client->dev, "I2C read fail, ret=%d\n", ret);
    64			return -EIO;
    65		}
    66	
    67		u8 computed_crc = crc8(cef168_crc8_table, (const u8 *)rx_data,
    68				       sizeof(struct cef168_data) - 1, CRC8_INIT_VALUE);
    69		if (computed_crc != rx_data->crc8) {
    70			dev_err(&client->dev,
    71				"CRC mismatch calculated=0x%02X read=0x%02X\n",
    72				computed_crc, rx_data->crc8);
    73			return -EIO;
    74		}
    75	
  > 76		rx_data->moving_time = le16_to_cpu(rx_data->moving_time);
    77		rx_data->focus_position_min = le16_to_cpu(rx_data->focus_position_min);
    78		rx_data->focus_position_max = le16_to_cpu(rx_data->focus_position_max);
    79		rx_data->focus_position_cur = le16_to_cpu(rx_data->focus_position_cur);
    80		rx_data->focus_distance_min = le16_to_cpu(rx_data->focus_distance_min);
    81		rx_data->focus_distance_max = le16_to_cpu(rx_data->focus_distance_max);
    82	
    83		return 0;
    84	}
    85	
    86	static int cef168_set_ctrl(struct v4l2_ctrl *ctrl)
    87	{
    88		struct cef168_device *dev = to_cef168(ctrl);
    89		u8 cmd;
    90	
    91		switch (ctrl->id) {
    92		case V4L2_CID_FOCUS_ABSOLUTE:
    93			return cef168_i2c_write(dev, INP_SET_FOCUS, ctrl->val);
    94		case V4L2_CID_FOCUS_RELATIVE:
    95			cmd = ctrl->val < 0 ? INP_SET_FOCUS_N : INP_SET_FOCUS_P;
    96			return cef168_i2c_write(dev, cmd, abs(ctrl->val));
    97		case V4L2_CID_IRIS_ABSOLUTE:
    98			return cef168_i2c_write(dev, INP_SET_APERTURE, ctrl->val);
    99		case V4L2_CID_IRIS_RELATIVE:
   100			cmd = ctrl->val < 0 ? INP_SET_APERTURE_N : INP_SET_APERTURE_P;
   101			return cef168_i2c_write(dev, cmd, abs(ctrl->val));
   102		case CEF168_V4L2_CID_CUSTOM(calibrate):
   103			return cef168_i2c_write(dev, INP_CALIBRATE, 0);
   104			return 0;
   105		}
   106	
   107		return -EINVAL;
   108	}
   109	
   110	static int cef168_get_ctrl(struct v4l2_ctrl *ctrl)
   111	{
   112		struct cef168_device *dev = to_cef168(ctrl);
   113		int rval;
   114	
   115		if (ctrl->id != V4L2_CID_FOCUS_ABSOLUTE &&
   116		    ctrl->id != CEF168_V4L2_CID_CUSTOM(data) &&
   117		    ctrl->id != CEF168_V4L2_CID_CUSTOM(focus_range) &&
   118		    ctrl->id != CEF168_V4L2_CID_CUSTOM(lens_id))
   119			return -EINVAL;
   120	
   121		struct cef168_data data;
   122	
   123		rval = cef168_i2c_read(dev, &data);
   124		if (rval < 0)
   125			return rval;
   126	
   127		switch (ctrl->id) {
   128		case V4L2_CID_FOCUS_ABSOLUTE:
   129			ctrl->val = data.focus_position_cur;
   130			return 0;
   131		case CEF168_V4L2_CID_CUSTOM(focus_range):
   132			ctrl->p_new.p_u32[0] =
 > 133				(u32)le32_to_cpu(((u32)data.focus_position_min << 16) |
   134						 data.focus_position_max);
   135			return 0;
   136		case CEF168_V4L2_CID_CUSTOM(lens_id):
   137			ctrl->p_new.p_u8[0] = data.lens_id;
   138			return 0;
   139		case CEF168_V4L2_CID_CUSTOM(data):
   140			memcpy(ctrl->p_new.p_u8, &data, sizeof(data));
   141			return 0;
   142		}
   143	
   144		return -EINVAL;
   145	}
   146	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ