[cris:scmi_telemetry_ng_V8 22/30] drivers/firmware/arm_scmi/driver.c:2342 scmi_alloc_init_protocol_instance() error: we previously assumed 'pi' could be null (see line 2292)
Dan Carpenter <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <20260810085710.SY6oz2Dy9yD-fc7dlIhb0cYQ8VYN8oQI3aVJ4IQzG8I@z> |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cris/linux.git scmi_telemetry_ng_V8 head: bc3b27dd68cfc244c1e7717b72f88b2dfcb28d2e commit: 794ab60bbda9339aa782a6ce4a77e4e496538fb9 [22/30] firmware: arm_scmi: Add common per-protocol debugfs support config: arm-randconfig-r071-20260809 (https://download.01.org/0day-ci/archive/20260810/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 8.5.0 smatch: v0.5.0-9187-g5189e3fb 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 <[email protected]> | Reported-by: Dan Carpenter <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ smatch warnings: drivers/firmware/arm_scmi/driver.c:2342 scmi_alloc_init_protocol_instance() error: we previously assumed 'pi' could be null (see line 2292) vim +/pi +2342 drivers/firmware/arm_scmi/driver.c 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2275 static struct scmi_protocol_instance * 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2276 scmi_alloc_init_protocol_instance(struct scmi_info *info, 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2277 const struct scmi_protocol *proto) 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2278 { 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2279 int ret = -ENOMEM; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2280 void *gid; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2281 struct scmi_protocol_instance *pi; f0e73cee26dd3ed Cristian Marussi 2021-03-16 2282 const struct scmi_handle *handle = &info->handle; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2283 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2284 /* Protocol specific devres group */ 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2285 gid = devres_open_group(handle->dev, NULL, GFP_KERNEL); f5800e0bf6f9b7f Cristian Marussi 2021-03-16 2286 if (!gid) { fc110108b98305e Cristian Marussi 2024-04-18 2287 scmi_protocol_put(proto); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2288 goto out; f5800e0bf6f9b7f Cristian Marussi 2021-03-16 2289 } 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2290 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2291 pi = devm_kzalloc(handle->dev, sizeof(*pi), GFP_KERNEL); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 @2292 if (!pi) 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2293 goto clean; pi is NULL 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2294 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2295 pi->gid = gid; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2296 pi->proto = proto; d7b6cc563a60076 Cristian Marussi 2021-03-16 2297 pi->handle = handle; d7b6cc563a60076 Cristian Marussi 2021-03-16 2298 pi->ph.dev = handle->dev; a4a20b0975dc7b1 Cristian Marussi 2021-03-16 2299 pi->ph.xops = &xfer_ops; 5c873d120d8676b Cristian Marussi 2022-03-30 2300 pi->ph.hops = &helpers_ops; d7b6cc563a60076 Cristian Marussi 2021-03-16 2301 pi->ph.set_priv = scmi_set_protocol_priv; d7b6cc563a60076 Cristian Marussi 2021-03-16 2302 pi->ph.get_priv = scmi_get_protocol_priv; 07e4ec9fe678323 Cristian Marussi 2025-02-28 2303 pi->ph.instance_notifier_register = scmi_register_instance_notifier; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2304 refcount_set(&pi->users, 1); 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2305 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2306 /* 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2307 * Initialize effectively used protocol version performing any 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2308 * possibly needed negotiations. 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2309 */ 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2310 scmi_protocol_version_initialize(handle->dev, pi); 0fac05fdd9afff6 Cristian Marussi 2025-12-27 2311 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2312 /* proto->init is assured NON NULL by scmi_protocol_register */ a4a20b0975dc7b1 Cristian Marussi 2021-03-16 2313 ret = pi->proto->instance_init(&pi->ph); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2314 if (ret) 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2315 goto clean; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2316 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2317 ret = idr_alloc(&info->protocols, pi, proto->id, proto->id + 1, 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2318 GFP_KERNEL); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2319 if (ret != proto->id) 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2320 goto clean; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2321 533c7095b1ff927 Cristian Marussi 2021-03-16 2322 /* 533c7095b1ff927 Cristian Marussi 2021-03-16 2323 * Warn but ignore events registration errors since we do not want 533c7095b1ff927 Cristian Marussi 2021-03-16 2324 * to skip whole protocols if their notifications are messed up. 533c7095b1ff927 Cristian Marussi 2021-03-16 2325 */ 533c7095b1ff927 Cristian Marussi 2021-03-16 2326 if (pi->proto->events) { 533c7095b1ff927 Cristian Marussi 2021-03-16 2327 ret = scmi_register_protocol_events(handle, pi->proto->id, b9f7fd907c38a38 Cristian Marussi 2021-03-16 2328 &pi->ph, 533c7095b1ff927 Cristian Marussi 2021-03-16 2329 pi->proto->events); 533c7095b1ff927 Cristian Marussi 2021-03-16 2330 if (ret) 533c7095b1ff927 Cristian Marussi 2021-03-16 2331 dev_warn(handle->dev, 533c7095b1ff927 Cristian Marussi 2021-03-16 2332 "Protocol:%X - Events Registration Failed - err:%d\n", 533c7095b1ff927 Cristian Marussi 2021-03-16 2333 pi->proto->id, ret); 533c7095b1ff927 Cristian Marussi 2021-03-16 2334 } 533c7095b1ff927 Cristian Marussi 2021-03-16 2335 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2336 devres_close_group(handle->dev, pi->gid); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2337 dev_dbg(handle->dev, "Initialized protocol: 0x%X\n", pi->proto->id); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2338 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2339 return pi; 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2340 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2341 clean: 794ab60bbda9339 Cristian Marussi 2023-03-15 @2342 debugfs_remove_recursive(pi->dbg); ^^^^^^^ Dereferenced. f5800e0bf6f9b7f Cristian Marussi 2021-03-16 2343 /* Take care to put the protocol module's owner before releasing all */ fc110108b98305e Cristian Marussi 2024-04-18 2344 scmi_protocol_put(proto); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2345 devres_release_group(handle->dev, gid); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2346 out: 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2347 return ERR_PTR(ret); 48dc16e2e52ca38 Cristian Marussi 2021-03-16 2348 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki