:::::: :::::: Manual check reason: "low confidence static check warning: drivers/media/i2c/ov9282.c:1054:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]" ::::::
CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com In-Reply-To: <20220728130237.3396663-7-alexander.st...@ew.tq-group.com> References: <20220728130237.3396663-7-alexander.st...@ew.tq-group.com> TO: Alexander Stein <alexander.st...@ew.tq-group.com> TO: "Paul J . Murphy" <paul.j.mur...@intel.com> TO: Daniele Alessandrelli <daniele.alessandre...@intel.com> TO: Mauro Carvalho Chehab <mche...@kernel.org> CC: linux-me...@vger.kernel.org TO: Rob Herring <robh...@kernel.org> TO: Krzysztof Kozlowski <k...@kernel.org> CC: Alexander Stein <alexander.st...@ew.tq-group.com> CC: devicet...@vger.kernel.org CC: Sakari Ailus <sakari.ai...@iki.fi> Hi Alexander, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on media-tree/master] [also build test WARNING on linus/master v5.19 next-20220728] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Alexander-Stein/OV9281-support/20220728-210448 base: git://linuxtv.org/media_tree.git master :::::: branch date: 5 days ago :::::: commit date: 5 days ago config: arm-randconfig-c002-20220731 (https://download.01.org/0day-ci/archive/20220803/202208030644.ufmtmav9-...@intel.com/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 52cd00cabf479aa7eb6dbb063b7ba41ea57bce9e) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://github.com/intel-lab-lkp/linux/commit/ee28006553d4d23f600b0076ef6066710519f156 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Alexander-Stein/OV9281-support/20220728-210448 git checkout ee28006553d4d23f600b0076ef6066710519f156 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^ include/linux/printk.h:690:2: note: expanded from macro 'pr_warn_ratelimited' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:674:3: note: expanded from macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^ include/linux/printk.h:480:26: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^ include/linux/printk.h:451:3: note: expanded from macro 'printk_index_wrap' __printk_index_emit(_fmt, NULL, NULL); \ ^ include/linux/printk.h:426:34: note: expanded from macro '__printk_index_emit' #define __printk_index_emit(...) do {} while (0) ^ include/linux/hid.h:1056:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input') input->name, c, type); ^ include/linux/printk.h:690:49: note: expanded from macro 'pr_warn_ratelimited' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/printk.h:674:17: note: expanded from macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~ include/linux/printk.h:480:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/printk.h:452:19: note: expanded from macro 'printk_index_wrap' _p_func(_fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~ Suppressed 29 warnings (29 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 45 warnings generated. drivers/hwmon/sht3x.c:268:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] return sprintf(buf, "%d\n", data->temperature); ^~~~~~~ drivers/hwmon/sht3x.c:268:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 return sprintf(buf, "%d\n", data->temperature); ^~~~~~~ drivers/hwmon/sht3x.c:279:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] return sprintf(buf, "%u\n", data->humidity); ^~~~~~~ drivers/hwmon/sht3x.c:279:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 return sprintf(buf, "%u\n", data->humidity); ^~~~~~~ drivers/hwmon/sht3x.c:356:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(position, commands->write_command, SHT3X_CMD_LENGTH); ^~~~~~ drivers/hwmon/sht3x.c:356:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(position, commands->write_command, SHT3X_CMD_LENGTH); ^~~~~~ Suppressed 42 warnings (42 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 42 warnings generated. Suppressed 42 warnings (42 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 30 warnings generated. drivers/input/joystick/magellan.c:144:2: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] snprintf(magellan->phys, sizeof(magellan->phys), "%s/input0", serio->phys); ^~~~~~~~ drivers/input/joystick/magellan.c:144:2: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 snprintf(magellan->phys, sizeof(magellan->phys), "%s/input0", serio->phys); ^~~~~~~~ Suppressed 29 warnings (29 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 36 warnings generated. drivers/input/joystick/psxpad-spi.c:101:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(pad->sendbuf, PSX_CMD_ENTER_CFG, sizeof(PSX_CMD_ENTER_CFG)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:101:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(pad->sendbuf, PSX_CMD_ENTER_CFG, sizeof(PSX_CMD_ENTER_CFG)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:110:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(pad->sendbuf, PSX_CMD_ENABLE_MOTOR, ^~~~~~ drivers/input/joystick/psxpad-spi.c:110:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(pad->sendbuf, PSX_CMD_ENABLE_MOTOR, ^~~~~~ drivers/input/joystick/psxpad-spi.c:122:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(pad->sendbuf, PSX_CMD_EXIT_CFG, sizeof(PSX_CMD_EXIT_CFG)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:122:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(pad->sendbuf, PSX_CMD_EXIT_CFG, sizeof(PSX_CMD_EXIT_CFG)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:213:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(pad->sendbuf, PSX_CMD_POLL, sizeof(PSX_CMD_POLL)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:213:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(pad->sendbuf, PSX_CMD_POLL, sizeof(PSX_CMD_POLL)); ^~~~~~ drivers/input/joystick/psxpad-spi.c:306:2: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] snprintf(pad->phys, sizeof(pad->phys), "%s/input", dev_name(&spi->dev)); ^~~~~~~~ drivers/input/joystick/psxpad-spi.c:306:2: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 snprintf(pad->phys, sizeof(pad->phys), "%s/input", dev_name(&spi->dev)); ^~~~~~~~ Suppressed 31 warnings (31 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 48 warnings generated. >> drivers/media/i2c/ov9282.c:1054:3: warning: Undefined or garbage value >> returned to caller [clang-analyzer-core.uninitialized.UndefReturn] return ret; ^ ~~~ drivers/media/i2c/ov9282.c:1041:2: note: 'ret' declared without an initial value int ret; ^~~~~~~ drivers/media/i2c/ov9282.c:1044:6: note: Assuming 'ov9282' is non-null if (!ov9282) ^~~~~~~ drivers/media/i2c/ov9282.c:1044:2: note: Taking false branch if (!ov9282) ^ drivers/media/i2c/ov9282.c:1052:6: note: Assuming 'sensor_name' is null if (!sensor_name) { ^~~~~~~~~~~~ drivers/media/i2c/ov9282.c:1052:2: note: Taking true branch if (!sensor_name) { ^ drivers/media/i2c/ov9282.c:1053:3: note: Loop condition is false. Exiting loop dev_err(ov9282->dev, "Sensor name is missing"); ^ include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err' dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__) ^ include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap' dev_printk_index_emit(level, fmt); \ ^ include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit' printk_index_subsys_emit("%s %s: ", level, fmt) ^ include/linux/printk.h:447:2: note: expanded from macro 'printk_index_subsys_emit' __printk_index_emit(fmt, level, subsys_fmt_prefix) ^ include/linux/printk.h:426:34: note: expanded from macro '__printk_index_emit' #define __printk_index_emit(...) do {} while (0) ^ drivers/media/i2c/ov9282.c:1054:3: note: Undefined or garbage value returned to caller return ret; ^ ~~~ Suppressed 47 warnings (45 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 46 warnings generated. Suppressed 46 warnings (45 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 47 warnings generated. drivers/media/i2c/ov9650.c:606:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = ov965x_write(ov965x, REG_COM8, reg); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/ov9650.c:606:3: note: Value stored to 'ret' is never read ret = ov965x_write(ov965x, REG_COM8, reg); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 46 warnings (45 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 50 warnings generated. drivers/media/i2c/rdacm21.c:373:11: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] if (val == OV10640_ID_HIGH) ^ drivers/media/i2c/rdacm21.c:550:6: note: Assuming 'dev' is non-null if (!dev) ^~~~ drivers/media/i2c/rdacm21.c:550:2: note: Taking false branch if (!dev) ^ drivers/media/i2c/rdacm21.c:557:6: note: 'ret' is >= 0 if (ret < 0) { ^~~ drivers/media/i2c/rdacm21.c:557:2: note: Taking false branch if (ret < 0) { ^ drivers/media/i2c/rdacm21.c:564:2: note: Taking false branch if (IS_ERR(dev->isp)) ^ drivers/media/i2c/rdacm21.c:567:8: note: Calling 'rdacm21_initialize' ret = rdacm21_initialize(dev); ^~~~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/rdacm21.c:481:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:481:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:489:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:489:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:493:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:493:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:501:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:501:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:505:6: note: Assuming 'ret' is 0 if (ret) vim +1054 drivers/media/i2c/ov9282.c ded4a31a12fead Alexander Stein 2022-07-28 1030 14ea315bbeb75a Martina Krasteva 2021-05-27 1031 /** 14ea315bbeb75a Martina Krasteva 2021-05-27 1032 * ov9282_probe() - I2C client device binding 14ea315bbeb75a Martina Krasteva 2021-05-27 1033 * @client: pointer to i2c client device 14ea315bbeb75a Martina Krasteva 2021-05-27 1034 * 14ea315bbeb75a Martina Krasteva 2021-05-27 1035 * Return: 0 if successful, error code otherwise. 14ea315bbeb75a Martina Krasteva 2021-05-27 1036 */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1037 static int ov9282_probe(struct i2c_client *client) 14ea315bbeb75a Martina Krasteva 2021-05-27 1038 { 14ea315bbeb75a Martina Krasteva 2021-05-27 1039 struct ov9282 *ov9282; ee28006553d4d2 Alexander Stein 2022-07-28 1040 const char *sensor_name; 14ea315bbeb75a Martina Krasteva 2021-05-27 1041 int ret; 14ea315bbeb75a Martina Krasteva 2021-05-27 1042 14ea315bbeb75a Martina Krasteva 2021-05-27 1043 ov9282 = devm_kzalloc(&client->dev, sizeof(*ov9282), GFP_KERNEL); 14ea315bbeb75a Martina Krasteva 2021-05-27 1044 if (!ov9282) 14ea315bbeb75a Martina Krasteva 2021-05-27 1045 return -ENOMEM; 14ea315bbeb75a Martina Krasteva 2021-05-27 1046 14ea315bbeb75a Martina Krasteva 2021-05-27 1047 ov9282->dev = &client->dev; 14ea315bbeb75a Martina Krasteva 2021-05-27 1048 14ea315bbeb75a Martina Krasteva 2021-05-27 1049 /* Initialize subdev */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1050 v4l2_i2c_subdev_init(&ov9282->sd, client, &ov9282_subdev_ops); ee28006553d4d2 Alexander Stein 2022-07-28 1051 sensor_name = device_get_match_data(ov9282->dev); ee28006553d4d2 Alexander Stein 2022-07-28 1052 if (!sensor_name) { ee28006553d4d2 Alexander Stein 2022-07-28 1053 dev_err(ov9282->dev, "Sensor name is missing"); ee28006553d4d2 Alexander Stein 2022-07-28 @1054 return ret; ee28006553d4d2 Alexander Stein 2022-07-28 1055 } ee28006553d4d2 Alexander Stein 2022-07-28 1056 v4l2_i2c_subdev_set_name(&ov9282->sd, client, sensor_name, NULL); 14ea315bbeb75a Martina Krasteva 2021-05-27 1057 14ea315bbeb75a Martina Krasteva 2021-05-27 1058 ret = ov9282_parse_hw_config(ov9282); 14ea315bbeb75a Martina Krasteva 2021-05-27 1059 if (ret) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1060 dev_err(ov9282->dev, "HW configuration is not supported"); 14ea315bbeb75a Martina Krasteva 2021-05-27 1061 return ret; 14ea315bbeb75a Martina Krasteva 2021-05-27 1062 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1063 ded4a31a12fead Alexander Stein 2022-07-28 1064 ret = ov9282_get_regulators(ov9282); ded4a31a12fead Alexander Stein 2022-07-28 1065 if (ret) { ded4a31a12fead Alexander Stein 2022-07-28 1066 dev_err(&client->dev, "Failed to get power regulators\n"); ded4a31a12fead Alexander Stein 2022-07-28 1067 return ret; ded4a31a12fead Alexander Stein 2022-07-28 1068 } ded4a31a12fead Alexander Stein 2022-07-28 1069 14ea315bbeb75a Martina Krasteva 2021-05-27 1070 mutex_init(&ov9282->mutex); 14ea315bbeb75a Martina Krasteva 2021-05-27 1071 14ea315bbeb75a Martina Krasteva 2021-05-27 1072 ret = ov9282_power_on(ov9282->dev); 14ea315bbeb75a Martina Krasteva 2021-05-27 1073 if (ret) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1074 dev_err(ov9282->dev, "failed to power-on the sensor"); 14ea315bbeb75a Martina Krasteva 2021-05-27 1075 goto error_mutex_destroy; 14ea315bbeb75a Martina Krasteva 2021-05-27 1076 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1077 14ea315bbeb75a Martina Krasteva 2021-05-27 1078 /* Check module identity */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1079 ret = ov9282_detect(ov9282); 14ea315bbeb75a Martina Krasteva 2021-05-27 1080 if (ret) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1081 dev_err(ov9282->dev, "failed to find sensor: %d", ret); 14ea315bbeb75a Martina Krasteva 2021-05-27 1082 goto error_power_off; 14ea315bbeb75a Martina Krasteva 2021-05-27 1083 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1084 14ea315bbeb75a Martina Krasteva 2021-05-27 1085 /* Set default mode to max resolution */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1086 ov9282->cur_mode = &supported_mode; 14ea315bbeb75a Martina Krasteva 2021-05-27 1087 ov9282->vblank = ov9282->cur_mode->vblank; 14ea315bbeb75a Martina Krasteva 2021-05-27 1088 14ea315bbeb75a Martina Krasteva 2021-05-27 1089 ret = ov9282_init_controls(ov9282); 14ea315bbeb75a Martina Krasteva 2021-05-27 1090 if (ret) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1091 dev_err(ov9282->dev, "failed to init controls: %d", ret); 14ea315bbeb75a Martina Krasteva 2021-05-27 1092 goto error_power_off; 14ea315bbeb75a Martina Krasteva 2021-05-27 1093 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1094 14ea315bbeb75a Martina Krasteva 2021-05-27 1095 /* Initialize subdev */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1096 ov9282->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; 14ea315bbeb75a Martina Krasteva 2021-05-27 1097 ov9282->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR; 14ea315bbeb75a Martina Krasteva 2021-05-27 1098 14ea315bbeb75a Martina Krasteva 2021-05-27 1099 /* Initialize source pad */ 14ea315bbeb75a Martina Krasteva 2021-05-27 1100 ov9282->pad.flags = MEDIA_PAD_FL_SOURCE; 14ea315bbeb75a Martina Krasteva 2021-05-27 1101 ret = media_entity_pads_init(&ov9282->sd.entity, 1, &ov9282->pad); 14ea315bbeb75a Martina Krasteva 2021-05-27 1102 if (ret) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1103 dev_err(ov9282->dev, "failed to init entity pads: %d", ret); 14ea315bbeb75a Martina Krasteva 2021-05-27 1104 goto error_handler_free; 14ea315bbeb75a Martina Krasteva 2021-05-27 1105 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1106 14ea315bbeb75a Martina Krasteva 2021-05-27 1107 ret = v4l2_async_register_subdev_sensor(&ov9282->sd); 14ea315bbeb75a Martina Krasteva 2021-05-27 1108 if (ret < 0) { 14ea315bbeb75a Martina Krasteva 2021-05-27 1109 dev_err(ov9282->dev, 14ea315bbeb75a Martina Krasteva 2021-05-27 1110 "failed to register async subdev: %d", ret); 14ea315bbeb75a Martina Krasteva 2021-05-27 1111 goto error_media_entity; 14ea315bbeb75a Martina Krasteva 2021-05-27 1112 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1113 14ea315bbeb75a Martina Krasteva 2021-05-27 1114 pm_runtime_set_active(ov9282->dev); 14ea315bbeb75a Martina Krasteva 2021-05-27 1115 pm_runtime_enable(ov9282->dev); 14ea315bbeb75a Martina Krasteva 2021-05-27 1116 pm_runtime_idle(ov9282->dev); 14ea315bbeb75a Martina Krasteva 2021-05-27 1117 14ea315bbeb75a Martina Krasteva 2021-05-27 1118 return 0; 14ea315bbeb75a Martina Krasteva 2021-05-27 1119 14ea315bbeb75a Martina Krasteva 2021-05-27 1120 error_media_entity: 14ea315bbeb75a Martina Krasteva 2021-05-27 1121 media_entity_cleanup(&ov9282->sd.entity); 14ea315bbeb75a Martina Krasteva 2021-05-27 1122 error_handler_free: 14ea315bbeb75a Martina Krasteva 2021-05-27 1123 v4l2_ctrl_handler_free(ov9282->sd.ctrl_handler); 14ea315bbeb75a Martina Krasteva 2021-05-27 1124 error_power_off: 14ea315bbeb75a Martina Krasteva 2021-05-27 1125 ov9282_power_off(ov9282->dev); 14ea315bbeb75a Martina Krasteva 2021-05-27 1126 error_mutex_destroy: 14ea315bbeb75a Martina Krasteva 2021-05-27 1127 mutex_destroy(&ov9282->mutex); 14ea315bbeb75a Martina Krasteva 2021-05-27 1128 14ea315bbeb75a Martina Krasteva 2021-05-27 1129 return ret; 14ea315bbeb75a Martina Krasteva 2021-05-27 1130 } 14ea315bbeb75a Martina Krasteva 2021-05-27 1131 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org