All of lore.kernel.org
 help / color / mirror / Atom feed
* [sailus-media-tree:cleanup 30/54] drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)
@ 2025-08-27  7:17 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2025-08-26 22:08 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-media@vger.kernel.org
TO: "André Apitzsch" <git@apitzsch.eu>
CC: Sakari Ailus <sakari.ailus@linux.intel.com>
CC: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

tree:   git://linuxtv.org/sailus/media_tree.git cleanup
head:   9a8e7210e8e21ebba263affd0d7481ef0d6c323e
commit: 7407c0acdb2ff0c1e3a962543db7d775b3b611c8 [30/54] media: i2c: imx214: Move imx214_pll_update to imx214_ctrls_init
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: i386-randconfig-141-20250827 (https://download.01.org/0day-ci/archive/20250827/202508270603.MDqIVFss-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202508270603.MDqIVFss-lkp@intel.com/

smatch warnings:
drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)

vim +1109 drivers/media/i2c/imx214.c

7407c0acdb2ff0 André Apitzsch 2025-06-30   986  
4f302d004bd0fc André Apitzsch 2023-12-06   987  static int imx214_ctrls_init(struct imx214 *imx214)
4f302d004bd0fc André Apitzsch 2023-12-06   988  {
4f302d004bd0fc André Apitzsch 2023-12-06   989  	static const struct v4l2_area unit_size = {
4f302d004bd0fc André Apitzsch 2023-12-06   990  		.width = 1120,
4f302d004bd0fc André Apitzsch 2023-12-06   991  		.height = 1120,
4f302d004bd0fc André Apitzsch 2023-12-06   992  	};
0b57fcf81d32b8 André Apitzsch 2024-12-20   993  	const struct imx214_mode *mode = &imx214_modes[0];
2ae9f9780d8097 André Apitzsch 2023-12-06   994  	struct v4l2_fwnode_device_properties props;
4f302d004bd0fc André Apitzsch 2023-12-06   995  	struct v4l2_ctrl_handler *ctrl_hdlr;
0b57fcf81d32b8 André Apitzsch 2024-12-20   996  	int exposure_max, exposure_def;
0b57fcf81d32b8 André Apitzsch 2024-12-20   997  	int hblank;
aac37a3a763d1f André Apitzsch 2024-12-20   998  	int i, ret;
4f302d004bd0fc André Apitzsch 2023-12-06   999  
2ae9f9780d8097 André Apitzsch 2023-12-06  1000  	ret = v4l2_fwnode_device_parse(imx214->dev, &props);
2ae9f9780d8097 André Apitzsch 2023-12-06  1001  	if (ret < 0)
2ae9f9780d8097 André Apitzsch 2023-12-06  1002  		return ret;
2ae9f9780d8097 André Apitzsch 2023-12-06  1003  
4f302d004bd0fc André Apitzsch 2023-12-06  1004  	ctrl_hdlr = &imx214->ctrls;
aac37a3a763d1f André Apitzsch 2024-12-20  1005  	ret = v4l2_ctrl_handler_init(&imx214->ctrls, 13);
4f302d004bd0fc André Apitzsch 2023-12-06  1006  	if (ret)
4f302d004bd0fc André Apitzsch 2023-12-06  1007  		return ret;
4f302d004bd0fc André Apitzsch 2023-12-06  1008  
b9b359662952ff André Apitzsch 2025-05-24  1009  	imx214->pixel_rate =
b9b359662952ff André Apitzsch 2025-05-24  1010  		v4l2_ctrl_new_std(ctrl_hdlr, NULL, V4L2_CID_PIXEL_RATE, 1,
b9b359662952ff André Apitzsch 2025-05-24  1011  				  INT_MAX, 1, 1);
4f302d004bd0fc André Apitzsch 2023-12-06  1012  
4f302d004bd0fc André Apitzsch 2023-12-06  1013  	imx214->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr, NULL,
4f302d004bd0fc André Apitzsch 2023-12-06  1014  						   V4L2_CID_LINK_FREQ,
b9b359662952ff André Apitzsch 2025-05-24  1015  						   imx214->bus_cfg.nr_of_link_frequencies - 1,
b9b359662952ff André Apitzsch 2025-05-24  1016  						   0, imx214->bus_cfg.link_frequencies);
4f302d004bd0fc André Apitzsch 2023-12-06 @1017  	if (imx214->link_freq)
4f302d004bd0fc André Apitzsch 2023-12-06  1018  		imx214->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
4f302d004bd0fc André Apitzsch 2023-12-06  1019  
4f302d004bd0fc André Apitzsch 2023-12-06  1020  	/*
4f302d004bd0fc André Apitzsch 2023-12-06  1021  	 * WARNING!
4f302d004bd0fc André Apitzsch 2023-12-06  1022  	 * Values obtained reverse engineering blobs and/or devices.
4f302d004bd0fc André Apitzsch 2023-12-06  1023  	 * Ranges and functionality might be wrong.
4f302d004bd0fc André Apitzsch 2023-12-06  1024  	 *
4f302d004bd0fc André Apitzsch 2023-12-06  1025  	 * Sony, please release some register set documentation for the
4f302d004bd0fc André Apitzsch 2023-12-06  1026  	 * device.
4f302d004bd0fc André Apitzsch 2023-12-06  1027  	 *
4f302d004bd0fc André Apitzsch 2023-12-06  1028  	 * Yours sincerely, Ricardo.
4f302d004bd0fc André Apitzsch 2023-12-06  1029  	 */
0b57fcf81d32b8 André Apitzsch 2024-12-20  1030  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1031  	/* Initial vblank/hblank/exposure parameters based on current mode */
0b57fcf81d32b8 André Apitzsch 2024-12-20  1032  	imx214->vblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1033  					   V4L2_CID_VBLANK, IMX214_VBLANK_MIN,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1034  					   IMX214_VTS_MAX - mode->height, 2,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1035  					   mode->vts_def - mode->height);
0b57fcf81d32b8 André Apitzsch 2024-12-20  1036  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1037  	hblank = IMX214_PPL_DEFAULT - mode->width;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1038  	imx214->hblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1039  					   V4L2_CID_HBLANK, hblank, hblank,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1040  					   1, hblank);
0b57fcf81d32b8 André Apitzsch 2024-12-20  1041  	if (imx214->hblank)
0b57fcf81d32b8 André Apitzsch 2024-12-20  1042  		imx214->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1043  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1044  	exposure_max = mode->vts_def - IMX214_EXPOSURE_OFFSET;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1045  	exposure_def = min(exposure_max, IMX214_EXPOSURE_DEFAULT);
4f302d004bd0fc André Apitzsch 2023-12-06  1046  	imx214->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
4f302d004bd0fc André Apitzsch 2023-12-06  1047  					     V4L2_CID_EXPOSURE,
4f302d004bd0fc André Apitzsch 2023-12-06  1048  					     IMX214_EXPOSURE_MIN,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1049  					     exposure_max,
4f302d004bd0fc André Apitzsch 2023-12-06  1050  					     IMX214_EXPOSURE_STEP,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1051  					     exposure_def);
4f302d004bd0fc André Apitzsch 2023-12-06  1052  
dafbd1e960446e André Apitzsch 2024-12-20  1053  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_ANALOGUE_GAIN,
dafbd1e960446e André Apitzsch 2024-12-20  1054  			  IMX214_ANA_GAIN_MIN, IMX214_ANA_GAIN_MAX,
dafbd1e960446e André Apitzsch 2024-12-20  1055  			  IMX214_ANA_GAIN_STEP, IMX214_ANA_GAIN_DEFAULT);
dafbd1e960446e André Apitzsch 2024-12-20  1056  
dafbd1e960446e André Apitzsch 2024-12-20  1057  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_DIGITAL_GAIN,
dafbd1e960446e André Apitzsch 2024-12-20  1058  			  IMX214_DGTL_GAIN_MIN, IMX214_DGTL_GAIN_MAX,
dafbd1e960446e André Apitzsch 2024-12-20  1059  			  IMX214_DGTL_GAIN_STEP, IMX214_DGTL_GAIN_DEFAULT);
dafbd1e960446e André Apitzsch 2024-12-20  1060  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1061  	imx214->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1062  					  V4L2_CID_HFLIP, 0, 1, 1, 0);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1063  	if (imx214->hflip)
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1064  		imx214->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1065  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1066  	imx214->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1067  					  V4L2_CID_VFLIP, 0, 1, 1, 0);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1068  	if (imx214->vflip)
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1069  		imx214->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1070  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1071  	v4l2_ctrl_cluster(2, &imx214->hflip);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1072  
aac37a3a763d1f André Apitzsch 2024-12-20  1073  	v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &imx214_ctrl_ops,
aac37a3a763d1f André Apitzsch 2024-12-20  1074  				     V4L2_CID_TEST_PATTERN,
aac37a3a763d1f André Apitzsch 2024-12-20  1075  				     ARRAY_SIZE(imx214_test_pattern_menu) - 1,
aac37a3a763d1f André Apitzsch 2024-12-20  1076  				     0, 0, imx214_test_pattern_menu);
aac37a3a763d1f André Apitzsch 2024-12-20  1077  	for (i = 0; i < 4; i++) {
aac37a3a763d1f André Apitzsch 2024-12-20  1078  		/*
aac37a3a763d1f André Apitzsch 2024-12-20  1079  		 * The assumption is that
aac37a3a763d1f André Apitzsch 2024-12-20  1080  		 * V4L2_CID_TEST_PATTERN_GREENR == V4L2_CID_TEST_PATTERN_RED + 1
aac37a3a763d1f André Apitzsch 2024-12-20  1081  		 * V4L2_CID_TEST_PATTERN_BLUE   == V4L2_CID_TEST_PATTERN_RED + 2
aac37a3a763d1f André Apitzsch 2024-12-20  1082  		 * V4L2_CID_TEST_PATTERN_GREENB == V4L2_CID_TEST_PATTERN_RED + 3
aac37a3a763d1f André Apitzsch 2024-12-20  1083  		 */
aac37a3a763d1f André Apitzsch 2024-12-20  1084  		v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
aac37a3a763d1f André Apitzsch 2024-12-20  1085  				  V4L2_CID_TEST_PATTERN_RED + i,
aac37a3a763d1f André Apitzsch 2024-12-20  1086  				  IMX214_TESTP_COLOUR_MIN,
aac37a3a763d1f André Apitzsch 2024-12-20  1087  				  IMX214_TESTP_COLOUR_MAX,
aac37a3a763d1f André Apitzsch 2024-12-20  1088  				  IMX214_TESTP_COLOUR_STEP,
aac37a3a763d1f André Apitzsch 2024-12-20  1089  				  IMX214_TESTP_COLOUR_MAX);
aac37a3a763d1f André Apitzsch 2024-12-20  1090  		/* The "Solid color" pattern is white by default */
aac37a3a763d1f André Apitzsch 2024-12-20  1091  	}
aac37a3a763d1f André Apitzsch 2024-12-20  1092  
4f302d004bd0fc André Apitzsch 2023-12-06  1093  	imx214->unit_size = v4l2_ctrl_new_std_compound(ctrl_hdlr,
4f302d004bd0fc André Apitzsch 2023-12-06  1094  				NULL,
4f302d004bd0fc André Apitzsch 2023-12-06  1095  				V4L2_CID_UNIT_CELL_SIZE,
a5bd42aafb0684 Hans Verkuil   2025-02-03  1096  				v4l2_ctrl_ptr_create((void *)&unit_size),
a5bd42aafb0684 Hans Verkuil   2025-02-03  1097  				v4l2_ctrl_ptr_create(NULL),
a5bd42aafb0684 Hans Verkuil   2025-02-03  1098  				v4l2_ctrl_ptr_create(NULL));
4f302d004bd0fc André Apitzsch 2023-12-06  1099  
2ae9f9780d8097 André Apitzsch 2023-12-06  1100  	v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx214_ctrl_ops, &props);
2ae9f9780d8097 André Apitzsch 2023-12-06  1101  
4f302d004bd0fc André Apitzsch 2023-12-06  1102  	ret = ctrl_hdlr->error;
4f302d004bd0fc André Apitzsch 2023-12-06  1103  	if (ret) {
4f302d004bd0fc André Apitzsch 2023-12-06  1104  		v4l2_ctrl_handler_free(ctrl_hdlr);
4f302d004bd0fc André Apitzsch 2023-12-06  1105  		dev_err(imx214->dev, "failed to add controls: %d\n", ret);
4f302d004bd0fc André Apitzsch 2023-12-06  1106  		return ret;
4f302d004bd0fc André Apitzsch 2023-12-06  1107  	}
4f302d004bd0fc André Apitzsch 2023-12-06  1108  
7407c0acdb2ff0 André Apitzsch 2025-06-30 @1109  	ret = imx214_pll_update(imx214);
7407c0acdb2ff0 André Apitzsch 2025-06-30  1110  	if (ret < 0) {
7407c0acdb2ff0 André Apitzsch 2025-06-30  1111  		v4l2_ctrl_handler_free(ctrl_hdlr);
7407c0acdb2ff0 André Apitzsch 2025-06-30  1112  		dev_err(imx214->dev, "failed to update PLL\n");
7407c0acdb2ff0 André Apitzsch 2025-06-30  1113  		return ret;
7407c0acdb2ff0 André Apitzsch 2025-06-30  1114  	}
7407c0acdb2ff0 André Apitzsch 2025-06-30  1115  
4f302d004bd0fc André Apitzsch 2023-12-06  1116  	imx214->sd.ctrl_handler = ctrl_hdlr;
4f302d004bd0fc André Apitzsch 2023-12-06  1117  
4f302d004bd0fc André Apitzsch 2023-12-06  1118  	return 0;
4f302d004bd0fc André Apitzsch 2023-12-06  1119  };
4f302d004bd0fc André Apitzsch 2023-12-06  1120  

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [sailus-media-tree:cleanup 30/54] drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)
@ 2025-08-27  7:17 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2025-08-27  7:17 UTC (permalink / raw)
  To: oe-kbuild, André Apitzsch
  Cc: lkp, oe-kbuild-all, linux-media, Sakari Ailus, Laurent Pinchart

tree:   git://linuxtv.org/sailus/media_tree.git cleanup
head:   9a8e7210e8e21ebba263affd0d7481ef0d6c323e
commit: 7407c0acdb2ff0c1e3a962543db7d775b3b611c8 [30/54] media: i2c: imx214: Move imx214_pll_update to imx214_ctrls_init
config: i386-randconfig-141-20250827 (https://download.01.org/0day-ci/archive/20250827/202508270603.MDqIVFss-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0

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@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202508270603.MDqIVFss-lkp@intel.com/

smatch warnings:
drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)

vim +1109 drivers/media/i2c/imx214.c

4f302d004bd0fc André Apitzsch 2023-12-06   987  static int imx214_ctrls_init(struct imx214 *imx214)
4f302d004bd0fc André Apitzsch 2023-12-06   988  {
4f302d004bd0fc André Apitzsch 2023-12-06   989  	static const struct v4l2_area unit_size = {
4f302d004bd0fc André Apitzsch 2023-12-06   990  		.width = 1120,
4f302d004bd0fc André Apitzsch 2023-12-06   991  		.height = 1120,
4f302d004bd0fc André Apitzsch 2023-12-06   992  	};
0b57fcf81d32b8 André Apitzsch 2024-12-20   993  	const struct imx214_mode *mode = &imx214_modes[0];
2ae9f9780d8097 André Apitzsch 2023-12-06   994  	struct v4l2_fwnode_device_properties props;
4f302d004bd0fc André Apitzsch 2023-12-06   995  	struct v4l2_ctrl_handler *ctrl_hdlr;
0b57fcf81d32b8 André Apitzsch 2024-12-20   996  	int exposure_max, exposure_def;
0b57fcf81d32b8 André Apitzsch 2024-12-20   997  	int hblank;
aac37a3a763d1f André Apitzsch 2024-12-20   998  	int i, ret;
4f302d004bd0fc André Apitzsch 2023-12-06   999  
2ae9f9780d8097 André Apitzsch 2023-12-06  1000  	ret = v4l2_fwnode_device_parse(imx214->dev, &props);
2ae9f9780d8097 André Apitzsch 2023-12-06  1001  	if (ret < 0)
2ae9f9780d8097 André Apitzsch 2023-12-06  1002  		return ret;
2ae9f9780d8097 André Apitzsch 2023-12-06  1003  
4f302d004bd0fc André Apitzsch 2023-12-06  1004  	ctrl_hdlr = &imx214->ctrls;
aac37a3a763d1f André Apitzsch 2024-12-20  1005  	ret = v4l2_ctrl_handler_init(&imx214->ctrls, 13);
4f302d004bd0fc André Apitzsch 2023-12-06  1006  	if (ret)
4f302d004bd0fc André Apitzsch 2023-12-06  1007  		return ret;
4f302d004bd0fc André Apitzsch 2023-12-06  1008  
b9b359662952ff André Apitzsch 2025-05-24  1009  	imx214->pixel_rate =
b9b359662952ff André Apitzsch 2025-05-24  1010  		v4l2_ctrl_new_std(ctrl_hdlr, NULL, V4L2_CID_PIXEL_RATE, 1,
b9b359662952ff André Apitzsch 2025-05-24  1011  				  INT_MAX, 1, 1);
4f302d004bd0fc André Apitzsch 2023-12-06  1012  
4f302d004bd0fc André Apitzsch 2023-12-06  1013  	imx214->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr, NULL,
4f302d004bd0fc André Apitzsch 2023-12-06  1014  						   V4L2_CID_LINK_FREQ,
b9b359662952ff André Apitzsch 2025-05-24  1015  						   imx214->bus_cfg.nr_of_link_frequencies - 1,
b9b359662952ff André Apitzsch 2025-05-24  1016  						   0, imx214->bus_cfg.link_frequencies);
4f302d004bd0fc André Apitzsch 2023-12-06 @1017  	if (imx214->link_freq)
                                                            ^^^^^^^^^^^^^^^^^
This assumes ->link_freq can be NULL.

4f302d004bd0fc André Apitzsch 2023-12-06  1018  		imx214->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
4f302d004bd0fc André Apitzsch 2023-12-06  1019  
4f302d004bd0fc André Apitzsch 2023-12-06  1020  	/*
4f302d004bd0fc André Apitzsch 2023-12-06  1021  	 * WARNING!
4f302d004bd0fc André Apitzsch 2023-12-06  1022  	 * Values obtained reverse engineering blobs and/or devices.
4f302d004bd0fc André Apitzsch 2023-12-06  1023  	 * Ranges and functionality might be wrong.
4f302d004bd0fc André Apitzsch 2023-12-06  1024  	 *
4f302d004bd0fc André Apitzsch 2023-12-06  1025  	 * Sony, please release some register set documentation for the
4f302d004bd0fc André Apitzsch 2023-12-06  1026  	 * device.
4f302d004bd0fc André Apitzsch 2023-12-06  1027  	 *
4f302d004bd0fc André Apitzsch 2023-12-06  1028  	 * Yours sincerely, Ricardo.
4f302d004bd0fc André Apitzsch 2023-12-06  1029  	 */
0b57fcf81d32b8 André Apitzsch 2024-12-20  1030  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1031  	/* Initial vblank/hblank/exposure parameters based on current mode */
0b57fcf81d32b8 André Apitzsch 2024-12-20  1032  	imx214->vblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1033  					   V4L2_CID_VBLANK, IMX214_VBLANK_MIN,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1034  					   IMX214_VTS_MAX - mode->height, 2,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1035  					   mode->vts_def - mode->height);
0b57fcf81d32b8 André Apitzsch 2024-12-20  1036  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1037  	hblank = IMX214_PPL_DEFAULT - mode->width;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1038  	imx214->hblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1039  					   V4L2_CID_HBLANK, hblank, hblank,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1040  					   1, hblank);
0b57fcf81d32b8 André Apitzsch 2024-12-20  1041  	if (imx214->hblank)
0b57fcf81d32b8 André Apitzsch 2024-12-20  1042  		imx214->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1043  
0b57fcf81d32b8 André Apitzsch 2024-12-20  1044  	exposure_max = mode->vts_def - IMX214_EXPOSURE_OFFSET;
0b57fcf81d32b8 André Apitzsch 2024-12-20  1045  	exposure_def = min(exposure_max, IMX214_EXPOSURE_DEFAULT);
4f302d004bd0fc André Apitzsch 2023-12-06  1046  	imx214->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
4f302d004bd0fc André Apitzsch 2023-12-06  1047  					     V4L2_CID_EXPOSURE,
4f302d004bd0fc André Apitzsch 2023-12-06  1048  					     IMX214_EXPOSURE_MIN,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1049  					     exposure_max,
4f302d004bd0fc André Apitzsch 2023-12-06  1050  					     IMX214_EXPOSURE_STEP,
0b57fcf81d32b8 André Apitzsch 2024-12-20  1051  					     exposure_def);
4f302d004bd0fc André Apitzsch 2023-12-06  1052  
dafbd1e960446e André Apitzsch 2024-12-20  1053  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_ANALOGUE_GAIN,
dafbd1e960446e André Apitzsch 2024-12-20  1054  			  IMX214_ANA_GAIN_MIN, IMX214_ANA_GAIN_MAX,
dafbd1e960446e André Apitzsch 2024-12-20  1055  			  IMX214_ANA_GAIN_STEP, IMX214_ANA_GAIN_DEFAULT);
dafbd1e960446e André Apitzsch 2024-12-20  1056  
dafbd1e960446e André Apitzsch 2024-12-20  1057  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_DIGITAL_GAIN,
dafbd1e960446e André Apitzsch 2024-12-20  1058  			  IMX214_DGTL_GAIN_MIN, IMX214_DGTL_GAIN_MAX,
dafbd1e960446e André Apitzsch 2024-12-20  1059  			  IMX214_DGTL_GAIN_STEP, IMX214_DGTL_GAIN_DEFAULT);
dafbd1e960446e André Apitzsch 2024-12-20  1060  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1061  	imx214->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1062  					  V4L2_CID_HFLIP, 0, 1, 1, 0);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1063  	if (imx214->hflip)
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1064  		imx214->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1065  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1066  	imx214->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1067  					  V4L2_CID_VFLIP, 0, 1, 1, 0);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1068  	if (imx214->vflip)
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1069  		imx214->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1070  
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1071  	v4l2_ctrl_cluster(2, &imx214->hflip);
5f8d5fe0bd9471 André Apitzsch 2024-12-20  1072  
aac37a3a763d1f André Apitzsch 2024-12-20  1073  	v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &imx214_ctrl_ops,
aac37a3a763d1f André Apitzsch 2024-12-20  1074  				     V4L2_CID_TEST_PATTERN,
aac37a3a763d1f André Apitzsch 2024-12-20  1075  				     ARRAY_SIZE(imx214_test_pattern_menu) - 1,
aac37a3a763d1f André Apitzsch 2024-12-20  1076  				     0, 0, imx214_test_pattern_menu);
aac37a3a763d1f André Apitzsch 2024-12-20  1077  	for (i = 0; i < 4; i++) {
aac37a3a763d1f André Apitzsch 2024-12-20  1078  		/*
aac37a3a763d1f André Apitzsch 2024-12-20  1079  		 * The assumption is that
aac37a3a763d1f André Apitzsch 2024-12-20  1080  		 * V4L2_CID_TEST_PATTERN_GREENR == V4L2_CID_TEST_PATTERN_RED + 1
aac37a3a763d1f André Apitzsch 2024-12-20  1081  		 * V4L2_CID_TEST_PATTERN_BLUE   == V4L2_CID_TEST_PATTERN_RED + 2
aac37a3a763d1f André Apitzsch 2024-12-20  1082  		 * V4L2_CID_TEST_PATTERN_GREENB == V4L2_CID_TEST_PATTERN_RED + 3
aac37a3a763d1f André Apitzsch 2024-12-20  1083  		 */
aac37a3a763d1f André Apitzsch 2024-12-20  1084  		v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
aac37a3a763d1f André Apitzsch 2024-12-20  1085  				  V4L2_CID_TEST_PATTERN_RED + i,
aac37a3a763d1f André Apitzsch 2024-12-20  1086  				  IMX214_TESTP_COLOUR_MIN,
aac37a3a763d1f André Apitzsch 2024-12-20  1087  				  IMX214_TESTP_COLOUR_MAX,
aac37a3a763d1f André Apitzsch 2024-12-20  1088  				  IMX214_TESTP_COLOUR_STEP,
aac37a3a763d1f André Apitzsch 2024-12-20  1089  				  IMX214_TESTP_COLOUR_MAX);
aac37a3a763d1f André Apitzsch 2024-12-20  1090  		/* The "Solid color" pattern is white by default */
aac37a3a763d1f André Apitzsch 2024-12-20  1091  	}
aac37a3a763d1f André Apitzsch 2024-12-20  1092  
4f302d004bd0fc André Apitzsch 2023-12-06  1093  	imx214->unit_size = v4l2_ctrl_new_std_compound(ctrl_hdlr,
4f302d004bd0fc André Apitzsch 2023-12-06  1094  				NULL,
4f302d004bd0fc André Apitzsch 2023-12-06  1095  				V4L2_CID_UNIT_CELL_SIZE,
a5bd42aafb0684 Hans Verkuil   2025-02-03  1096  				v4l2_ctrl_ptr_create((void *)&unit_size),
a5bd42aafb0684 Hans Verkuil   2025-02-03  1097  				v4l2_ctrl_ptr_create(NULL),
a5bd42aafb0684 Hans Verkuil   2025-02-03  1098  				v4l2_ctrl_ptr_create(NULL));
4f302d004bd0fc André Apitzsch 2023-12-06  1099  
2ae9f9780d8097 André Apitzsch 2023-12-06  1100  	v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx214_ctrl_ops, &props);
2ae9f9780d8097 André Apitzsch 2023-12-06  1101  
4f302d004bd0fc André Apitzsch 2023-12-06  1102  	ret = ctrl_hdlr->error;
4f302d004bd0fc André Apitzsch 2023-12-06  1103  	if (ret) {
4f302d004bd0fc André Apitzsch 2023-12-06  1104  		v4l2_ctrl_handler_free(ctrl_hdlr);
4f302d004bd0fc André Apitzsch 2023-12-06  1105  		dev_err(imx214->dev, "failed to add controls: %d\n", ret);
4f302d004bd0fc André Apitzsch 2023-12-06  1106  		return ret;
4f302d004bd0fc André Apitzsch 2023-12-06  1107  	}
4f302d004bd0fc André Apitzsch 2023-12-06  1108  
7407c0acdb2ff0 André Apitzsch 2025-06-30 @1109  	ret = imx214_pll_update(imx214);
                                                                                ^^^^^^
This adds  an unchecked dereference.

7407c0acdb2ff0 André Apitzsch 2025-06-30  1110  	if (ret < 0) {
7407c0acdb2ff0 André Apitzsch 2025-06-30  1111  		v4l2_ctrl_handler_free(ctrl_hdlr);
7407c0acdb2ff0 André Apitzsch 2025-06-30  1112  		dev_err(imx214->dev, "failed to update PLL\n");
7407c0acdb2ff0 André Apitzsch 2025-06-30  1113  		return ret;
7407c0acdb2ff0 André Apitzsch 2025-06-30  1114  	}
7407c0acdb2ff0 André Apitzsch 2025-06-30  1115  
4f302d004bd0fc André Apitzsch 2023-12-06  1116  	imx214->sd.ctrl_handler = ctrl_hdlr;
4f302d004bd0fc André Apitzsch 2023-12-06  1117  
4f302d004bd0fc André Apitzsch 2023-12-06  1118  	return 0;
4f302d004bd0fc André Apitzsch 2023-12-06  1119  };

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sailus-media-tree:cleanup 30/54] drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)
  2025-08-27  7:17 ` Dan Carpenter
  (?)
@ 2025-08-27  9:12 ` Sakari Ailus
  2025-08-27 13:06   ` Dan Carpenter
  -1 siblings, 1 reply; 4+ messages in thread
From: Sakari Ailus @ 2025-08-27  9:12 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: oe-kbuild, André Apitzsch, lkp, oe-kbuild-all, linux-media,
	Laurent Pinchart

Hi Dan,

On Wed, Aug 27, 2025 at 10:17:26AM +0300, Dan Carpenter wrote:
> tree:   git://linuxtv.org/sailus/media_tree.git cleanup
> head:   9a8e7210e8e21ebba263affd0d7481ef0d6c323e
> commit: 7407c0acdb2ff0c1e3a962543db7d775b3b611c8 [30/54] media: i2c: imx214: Move imx214_pll_update to imx214_ctrls_init
> config: i386-randconfig-141-20250827 (https://download.01.org/0day-ci/archive/20250827/202508270603.MDqIVFss-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
> 
> 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@intel.com>
> | Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> | Closes: https://lore.kernel.org/r/202508270603.MDqIVFss-lkp@intel.com/
> 
> smatch warnings:
> drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)
> 
> vim +1109 drivers/media/i2c/imx214.c
> 
> 4f302d004bd0fc André Apitzsch 2023-12-06   987  static int imx214_ctrls_init(struct imx214 *imx214)
> 4f302d004bd0fc André Apitzsch 2023-12-06   988  {
> 4f302d004bd0fc André Apitzsch 2023-12-06   989  	static const struct v4l2_area unit_size = {
> 4f302d004bd0fc André Apitzsch 2023-12-06   990  		.width = 1120,
> 4f302d004bd0fc André Apitzsch 2023-12-06   991  		.height = 1120,
> 4f302d004bd0fc André Apitzsch 2023-12-06   992  	};
> 0b57fcf81d32b8 André Apitzsch 2024-12-20   993  	const struct imx214_mode *mode = &imx214_modes[0];
> 2ae9f9780d8097 André Apitzsch 2023-12-06   994  	struct v4l2_fwnode_device_properties props;
> 4f302d004bd0fc André Apitzsch 2023-12-06   995  	struct v4l2_ctrl_handler *ctrl_hdlr;
> 0b57fcf81d32b8 André Apitzsch 2024-12-20   996  	int exposure_max, exposure_def;
> 0b57fcf81d32b8 André Apitzsch 2024-12-20   997  	int hblank;
> aac37a3a763d1f André Apitzsch 2024-12-20   998  	int i, ret;
> 4f302d004bd0fc André Apitzsch 2023-12-06   999  
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1000  	ret = v4l2_fwnode_device_parse(imx214->dev, &props);
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1001  	if (ret < 0)
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1002  		return ret;
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1003  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1004  	ctrl_hdlr = &imx214->ctrls;
> aac37a3a763d1f André Apitzsch 2024-12-20  1005  	ret = v4l2_ctrl_handler_init(&imx214->ctrls, 13);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1006  	if (ret)
> 4f302d004bd0fc André Apitzsch 2023-12-06  1007  		return ret;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1008  
> b9b359662952ff André Apitzsch 2025-05-24  1009  	imx214->pixel_rate =
> b9b359662952ff André Apitzsch 2025-05-24  1010  		v4l2_ctrl_new_std(ctrl_hdlr, NULL, V4L2_CID_PIXEL_RATE, 1,
> b9b359662952ff André Apitzsch 2025-05-24  1011  				  INT_MAX, 1, 1);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1012  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1013  	imx214->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr, NULL,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1014  						   V4L2_CID_LINK_FREQ,
> b9b359662952ff André Apitzsch 2025-05-24  1015  						   imx214->bus_cfg.nr_of_link_frequencies - 1,
> b9b359662952ff André Apitzsch 2025-05-24  1016  						   0, imx214->bus_cfg.link_frequencies);
> 4f302d004bd0fc André Apitzsch 2023-12-06 @1017  	if (imx214->link_freq)
>                                                             ^^^^^^^^^^^^^^^^^
> This assumes ->link_freq can be NULL.

This seems to be a false positive: the control handler's error is set if
adding the LINK_FREQ control isn't successful and that is checked for later
on, before calling imx214_pll_update(). Probably smatch can't figure that
out?

> 
> 4f302d004bd0fc André Apitzsch 2023-12-06  1018  		imx214->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1019  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1020  	/*
> 4f302d004bd0fc André Apitzsch 2023-12-06  1021  	 * WARNING!
> 4f302d004bd0fc André Apitzsch 2023-12-06  1022  	 * Values obtained reverse engineering blobs and/or devices.
> 4f302d004bd0fc André Apitzsch 2023-12-06  1023  	 * Ranges and functionality might be wrong.
> 4f302d004bd0fc André Apitzsch 2023-12-06  1024  	 *
> 4f302d004bd0fc André Apitzsch 2023-12-06  1025  	 * Sony, please release some register set documentation for the
> 4f302d004bd0fc André Apitzsch 2023-12-06  1026  	 * device.
> 4f302d004bd0fc André Apitzsch 2023-12-06  1027  	 *
> 4f302d004bd0fc André Apitzsch 2023-12-06  1028  	 * Yours sincerely, Ricardo.
> 4f302d004bd0fc André Apitzsch 2023-12-06  1029  	 */
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1030  
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1031  	/* Initial vblank/hblank/exposure parameters based on current mode */
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1032  	imx214->vblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1033  					   V4L2_CID_VBLANK, IMX214_VBLANK_MIN,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1034  					   IMX214_VTS_MAX - mode->height, 2,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1035  					   mode->vts_def - mode->height);
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1036  
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1037  	hblank = IMX214_PPL_DEFAULT - mode->width;
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1038  	imx214->hblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1039  					   V4L2_CID_HBLANK, hblank, hblank,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1040  					   1, hblank);
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1041  	if (imx214->hblank)
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1042  		imx214->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1043  
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1044  	exposure_max = mode->vts_def - IMX214_EXPOSURE_OFFSET;
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1045  	exposure_def = min(exposure_max, IMX214_EXPOSURE_DEFAULT);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1046  	imx214->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1047  					     V4L2_CID_EXPOSURE,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1048  					     IMX214_EXPOSURE_MIN,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1049  					     exposure_max,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1050  					     IMX214_EXPOSURE_STEP,
> 0b57fcf81d32b8 André Apitzsch 2024-12-20  1051  					     exposure_def);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1052  
> dafbd1e960446e André Apitzsch 2024-12-20  1053  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_ANALOGUE_GAIN,
> dafbd1e960446e André Apitzsch 2024-12-20  1054  			  IMX214_ANA_GAIN_MIN, IMX214_ANA_GAIN_MAX,
> dafbd1e960446e André Apitzsch 2024-12-20  1055  			  IMX214_ANA_GAIN_STEP, IMX214_ANA_GAIN_DEFAULT);
> dafbd1e960446e André Apitzsch 2024-12-20  1056  
> dafbd1e960446e André Apitzsch 2024-12-20  1057  	v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops, V4L2_CID_DIGITAL_GAIN,
> dafbd1e960446e André Apitzsch 2024-12-20  1058  			  IMX214_DGTL_GAIN_MIN, IMX214_DGTL_GAIN_MAX,
> dafbd1e960446e André Apitzsch 2024-12-20  1059  			  IMX214_DGTL_GAIN_STEP, IMX214_DGTL_GAIN_DEFAULT);
> dafbd1e960446e André Apitzsch 2024-12-20  1060  
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1061  	imx214->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1062  					  V4L2_CID_HFLIP, 0, 1, 1, 0);
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1063  	if (imx214->hflip)
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1064  		imx214->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1065  
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1066  	imx214->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1067  					  V4L2_CID_VFLIP, 0, 1, 1, 0);
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1068  	if (imx214->vflip)
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1069  		imx214->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1070  
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1071  	v4l2_ctrl_cluster(2, &imx214->hflip);
> 5f8d5fe0bd9471 André Apitzsch 2024-12-20  1072  
> aac37a3a763d1f André Apitzsch 2024-12-20  1073  	v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &imx214_ctrl_ops,
> aac37a3a763d1f André Apitzsch 2024-12-20  1074  				     V4L2_CID_TEST_PATTERN,
> aac37a3a763d1f André Apitzsch 2024-12-20  1075  				     ARRAY_SIZE(imx214_test_pattern_menu) - 1,
> aac37a3a763d1f André Apitzsch 2024-12-20  1076  				     0, 0, imx214_test_pattern_menu);
> aac37a3a763d1f André Apitzsch 2024-12-20  1077  	for (i = 0; i < 4; i++) {
> aac37a3a763d1f André Apitzsch 2024-12-20  1078  		/*
> aac37a3a763d1f André Apitzsch 2024-12-20  1079  		 * The assumption is that
> aac37a3a763d1f André Apitzsch 2024-12-20  1080  		 * V4L2_CID_TEST_PATTERN_GREENR == V4L2_CID_TEST_PATTERN_RED + 1
> aac37a3a763d1f André Apitzsch 2024-12-20  1081  		 * V4L2_CID_TEST_PATTERN_BLUE   == V4L2_CID_TEST_PATTERN_RED + 2
> aac37a3a763d1f André Apitzsch 2024-12-20  1082  		 * V4L2_CID_TEST_PATTERN_GREENB == V4L2_CID_TEST_PATTERN_RED + 3
> aac37a3a763d1f André Apitzsch 2024-12-20  1083  		 */
> aac37a3a763d1f André Apitzsch 2024-12-20  1084  		v4l2_ctrl_new_std(ctrl_hdlr, &imx214_ctrl_ops,
> aac37a3a763d1f André Apitzsch 2024-12-20  1085  				  V4L2_CID_TEST_PATTERN_RED + i,
> aac37a3a763d1f André Apitzsch 2024-12-20  1086  				  IMX214_TESTP_COLOUR_MIN,
> aac37a3a763d1f André Apitzsch 2024-12-20  1087  				  IMX214_TESTP_COLOUR_MAX,
> aac37a3a763d1f André Apitzsch 2024-12-20  1088  				  IMX214_TESTP_COLOUR_STEP,
> aac37a3a763d1f André Apitzsch 2024-12-20  1089  				  IMX214_TESTP_COLOUR_MAX);
> aac37a3a763d1f André Apitzsch 2024-12-20  1090  		/* The "Solid color" pattern is white by default */
> aac37a3a763d1f André Apitzsch 2024-12-20  1091  	}
> aac37a3a763d1f André Apitzsch 2024-12-20  1092  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1093  	imx214->unit_size = v4l2_ctrl_new_std_compound(ctrl_hdlr,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1094  				NULL,
> 4f302d004bd0fc André Apitzsch 2023-12-06  1095  				V4L2_CID_UNIT_CELL_SIZE,
> a5bd42aafb0684 Hans Verkuil   2025-02-03  1096  				v4l2_ctrl_ptr_create((void *)&unit_size),
> a5bd42aafb0684 Hans Verkuil   2025-02-03  1097  				v4l2_ctrl_ptr_create(NULL),
> a5bd42aafb0684 Hans Verkuil   2025-02-03  1098  				v4l2_ctrl_ptr_create(NULL));
> 4f302d004bd0fc André Apitzsch 2023-12-06  1099  
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1100  	v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx214_ctrl_ops, &props);
> 2ae9f9780d8097 André Apitzsch 2023-12-06  1101  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1102  	ret = ctrl_hdlr->error;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1103  	if (ret) {
> 4f302d004bd0fc André Apitzsch 2023-12-06  1104  		v4l2_ctrl_handler_free(ctrl_hdlr);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1105  		dev_err(imx214->dev, "failed to add controls: %d\n", ret);
> 4f302d004bd0fc André Apitzsch 2023-12-06  1106  		return ret;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1107  	}
> 4f302d004bd0fc André Apitzsch 2023-12-06  1108  
> 7407c0acdb2ff0 André Apitzsch 2025-06-30 @1109  	ret = imx214_pll_update(imx214);
>                                                                                 ^^^^^^
> This adds  an unchecked dereference.
> 
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1110  	if (ret < 0) {
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1111  		v4l2_ctrl_handler_free(ctrl_hdlr);
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1112  		dev_err(imx214->dev, "failed to update PLL\n");
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1113  		return ret;
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1114  	}
> 7407c0acdb2ff0 André Apitzsch 2025-06-30  1115  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1116  	imx214->sd.ctrl_handler = ctrl_hdlr;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1117  
> 4f302d004bd0fc André Apitzsch 2023-12-06  1118  	return 0;
> 4f302d004bd0fc André Apitzsch 2023-12-06  1119  };
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
> 

-- 
Kind regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sailus-media-tree:cleanup 30/54] drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017)
  2025-08-27  9:12 ` Sakari Ailus
@ 2025-08-27 13:06   ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2025-08-27 13:06 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: oe-kbuild, André Apitzsch, lkp, oe-kbuild-all, linux-media,
	Laurent Pinchart

On Wed, Aug 27, 2025 at 12:12:34PM +0300, Sakari Ailus wrote:
> > 4f302d004bd0fc André Apitzsch 2023-12-06  1012  
> > 4f302d004bd0fc André Apitzsch 2023-12-06  1013  	imx214->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr, NULL,
> > 4f302d004bd0fc André Apitzsch 2023-12-06  1014  						   V4L2_CID_LINK_FREQ,
> > b9b359662952ff André Apitzsch 2025-05-24  1015  						   imx214->bus_cfg.nr_of_link_frequencies - 1,
> > b9b359662952ff André Apitzsch 2025-05-24  1016  						   0, imx214->bus_cfg.link_frequencies);
> > 4f302d004bd0fc André Apitzsch 2023-12-06 @1017  	if (imx214->link_freq)
> >                                                             ^^^^^^^^^^^^^^^^^
> > This assumes ->link_freq can be NULL.
> 
> This seems to be a false positive: the control handler's error is set if
> adding the LINK_FREQ control isn't successful and that is checked for later
> on, before calling imx214_pll_update(). Probably smatch can't figure that
> out?
> 

Yeah.  You're right.  Smatch knows that v4l2_ctrl_new() sets
ctrl_hdlr->error on failure but when it gets returned from
v4l2_ctrl_new_int_menu() then that information is lost.

I should investigate why that is...

Thanks for looking at this.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-08-27 13:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-26 22:08 [sailus-media-tree:cleanup 30/54] drivers/media/i2c/imx214.c:1109 imx214_ctrls_init() error: we previously assumed 'imx214->link_freq' could be null (see line 1017) kernel test robot
2025-08-27  7:17 ` Dan Carpenter
2025-08-27  9:12 ` Sakari Ailus
2025-08-27 13:06   ` Dan Carpenter

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.