Re: [PATCH] media: venus: avoid HFI resource leak on IRQ request failure

From: kernel test robot

Date: Wed Sep 16 2026 - 01:18:34 EST


Hi Guangshuo,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linuxtv-media-pending/master]
[also build test WARNING on media-tree/master linus/master v7.3-rc3 next-20260914]
[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/Guangshuo-Li/media-venus-avoid-HFI-resource-leak-on-IRQ-request-failure/20260915-203009
base: https://git.linuxtv.org/media-ci/media-pending.git master
patch link: https://lore.kernel.org/r/20260915123009.2420780-1-lgs201920130244%40gmail.com
patch subject: [PATCH] media: venus: avoid HFI resource leak on IRQ request failure
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20260916/202609161343.qH6ypqkG-lkp@xxxxxxxxx/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260916/202609161343.qH6ypqkG-lkp@xxxxxxxxx/reproduce)

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

All warnings (new ones prefixed by >>):

>> drivers/media/platform/qcom/venus/core.c:446:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
446 | enable_irq(core->irq);
| ^
drivers/media/platform/qcom/venus/core.c:443:2: note: previous statement is here
443 | if (ret)
| ^
1 warning generated.


vim +/if +446 drivers/media/platform/qcom/venus/core.c

379
380 static int venus_probe(struct platform_device *pdev)
381 {
382 struct device *dev = &pdev->dev;
383 struct venus_core *core;
384 int ret;
385
386 core = devm_kzalloc(dev, sizeof(*core), GFP_KERNEL);
387 if (!core)
388 return -ENOMEM;
389
390 core->dev = dev;
391
392 core->base = devm_platform_ioremap_resource(pdev, 0);
393 if (IS_ERR(core->base))
394 return PTR_ERR(core->base);
395
396 core->video_path = devm_of_icc_get(dev, "video-mem");
397 if (IS_ERR(core->video_path))
398 return PTR_ERR(core->video_path);
399
400 core->cpucfg_path = devm_of_icc_get(dev, "cpu-cfg");
401 if (IS_ERR(core->cpucfg_path))
402 return PTR_ERR(core->cpucfg_path);
403
404 core->irq = platform_get_irq(pdev, 0);
405 if (core->irq < 0)
406 return core->irq;
407
408 core->res = of_device_get_match_data(dev);
409 if (!core->res)
410 return -ENODEV;
411
412 mutex_init(&core->pm_lock);
413
414 core->pm_ops = venus_pm_get(core->res->hfi_version);
415 if (!core->pm_ops)
416 return -ENODEV;
417
418 if (core->pm_ops->core_get) {
419 ret = core->pm_ops->core_get(core);
420 if (ret)
421 return ret;
422 }
423
424 ret = dma_set_mask_and_coherent(dev, core->res->dma_mask);
425 if (ret)
426 goto err_core_put;
427
428 dma_set_max_seg_size(dev, UINT_MAX);
429
430 INIT_LIST_HEAD(&core->instances);
431 mutex_init(&core->lock);
432 INIT_DELAYED_WORK(&core->work, venus_sys_error_handler);
433 init_waitqueue_head(&core->sys_err_done);
434
435 ret = devm_request_threaded_irq(dev, core->irq, hfi_isr,
436 venus_isr_thread,
437 IRQF_TRIGGER_HIGH | IRQF_ONESHOT |
438 IRQF_NO_AUTOEN, "venus", core);
439 if (ret)
440 goto err_core_put;
441
442 ret = hfi_create(core, &venus_core_ops);
443 if (ret)
444 goto err_core_put;
445
> 446 enable_irq(core->irq);
447
448 venus_assign_register_offsets(core);
449
450 ret = v4l2_device_register(dev, &core->v4l2_dev);
451 if (ret)
452 goto err_hfi_destroy;
453
454 platform_set_drvdata(pdev, core);
455
456 pm_runtime_enable(dev);
457
458 ret = pm_runtime_get_sync(dev);
459 if (ret < 0)
460 goto err_runtime_disable;
461
462 ret = venus_firmware_init(core);
463 if (ret)
464 goto err_runtime_disable;
465
466 ret = venus_boot(core);
467 if (ret)
468 goto err_firmware_deinit;
469
470 ret = venus_firmware_cfg(core);
471 if (ret)
472 goto err_venus_shutdown;
473
474 ret = hfi_core_resume(core, true);
475 if (ret)
476 goto err_venus_shutdown;
477
478 ret = hfi_core_init(core);
479 if (ret)
480 goto err_venus_shutdown;
481
482 ret = venus_firmware_check(core);
483 if (ret)
484 goto err_core_deinit;
485
486 if (core->res->dec_nodename || core->res->enc_nodename) {
487 ret = venus_add_dynamic_nodes(core);
488 if (ret)
489 goto err_core_deinit;
490 }
491
492 ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
493 if (ret)
494 goto err_remove_dynamic_nodes;
495
496 ret = venus_enumerate_codecs(core, VIDC_SESSION_TYPE_DEC);
497 if (ret)
498 goto err_of_depopulate;
499
500 ret = venus_enumerate_codecs(core, VIDC_SESSION_TYPE_ENC);
501 if (ret)
502 goto err_of_depopulate;
503
504 ret = pm_runtime_put_sync(dev);
505 if (ret) {
506 pm_runtime_get_noresume(dev);
507 goto err_of_depopulate;
508 }
509
510 venus_dbgfs_init(core);
511
512 return 0;
513
514 err_of_depopulate:
515 of_platform_depopulate(dev);
516 err_remove_dynamic_nodes:
517 venus_remove_dynamic_nodes(core);
518 err_core_deinit:
519 hfi_core_deinit(core, false);
520 err_venus_shutdown:
521 venus_shutdown(core);
522 err_firmware_deinit:
523 venus_firmware_deinit(core);
524 err_runtime_disable:
525 pm_runtime_put_noidle(dev);
526 pm_runtime_disable(dev);
527 pm_runtime_set_suspended(dev);
528 v4l2_device_unregister(&core->v4l2_dev);
529 err_hfi_destroy:
530 hfi_destroy(core);
531 err_core_put:
532 if (core->pm_ops->core_put)
533 core->pm_ops->core_put(core);
534 return ret;
535 }
536

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