* [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.