* [PATCH] media: cedrus: clean up media device on probe failure
@ 2026-04-27 10:00 박명훈
2026-04-29 19:08 ` Nicolas Dufresne
2026-04-30 3:42 ` kernel test robot
0 siblings, 2 replies; 3+ messages in thread
From: 박명훈 @ 2026-04-27 10:00 UTC (permalink / raw)
To: Maxime Ripard, Paul Kocialkowski, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Myeonghun Pak, linux-media, linux-staging, linux-arm-kernel,
linux-sunxi, linux-kernel, stable, Ijae Kim
From: Myeonghun Pak <mhun512@gmail.com>
cedrus_probe() initializes the media device before registering the video
device, the media controller, and the media device. If any of those later
steps fails, probe returns without calling media_device_cleanup(), so the
media device internals initialized by media_device_init() are left behind.
Add a media-device cleanup label to the probe unwind path and route video
registration failures through it as well.
Fixes: 50e761516f2b8c ("media: platform: Add Cedrus VPU decoder driver")
Cc: stable@vger.kernel.org
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
drivers/staging/media/sunxi/cedrus/cedrus.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
index 6600245dff..2c25654640 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
@@ -507,7 +507,7 @@ static int cedrus_probe(struct platform_device *pdev)
ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0);
if (ret) {
v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
- goto err_m2m;
+ goto err_media_cleanup;
}
v4l2_info(&dev->v4l2_dev,
@@ -533,6 +533,8 @@ static int cedrus_probe(struct platform_device *pdev)
v4l2_m2m_unregister_media_controller(dev->m2m_dev);
err_video:
video_unregister_device(&dev->vfd);
+err_media_cleanup:
+ media_device_cleanup(&dev->mdev);
err_m2m:
v4l2_m2m_release(dev->m2m_dev);
err_v4l2:
--
2.50.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] media: cedrus: clean up media device on probe failure
2026-04-27 10:00 [PATCH] media: cedrus: clean up media device on probe failure 박명훈
@ 2026-04-29 19:08 ` Nicolas Dufresne
2026-04-30 3:42 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: Nicolas Dufresne @ 2026-04-29 19:08 UTC (permalink / raw)
To: 박명훈, Maxime Ripard, Paul Kocialkowski,
Mauro Carvalho Chehab, Greg Kroah-Hartman, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland
Cc: linux-media, linux-staging, linux-arm-kernel, linux-sunxi,
linux-kernel, stable, Ijae Kim
[-- Attachment #1: Type: text/plain, Size: 1892 bytes --]
Le lundi 27 avril 2026 à 19:00 +0900, 박명훈 a écrit :
> From: Myeonghun Pak <mhun512@gmail.com>
>
> cedrus_probe() initializes the media device before registering the video
> device, the media controller, and the media device. If any of those later
> steps fails, probe returns without calling media_device_cleanup(), so the
> media device internals initialized by media_device_init() are left behind.
>
> Add a media-device cleanup label to the probe unwind path and route video
> registration failures through it as well.
>
> Fixes: 50e761516f2b8c ("media: platform: Add Cedrus VPU decoder driver")
> Cc: stable@vger.kernel.org
> Co-developed-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
> ---
> drivers/staging/media/sunxi/cedrus/cedrus.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
> index 6600245dff..2c25654640 100644
> --- a/drivers/staging/media/sunxi/cedrus/cedrus.c
> +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
> @@ -507,7 +507,7 @@ static int cedrus_probe(struct platform_device *pdev)
> ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0);
> if (ret) {
> v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
> - goto err_m2m;
> + goto err_media_cleanup;
> }
>
> v4l2_info(&dev->v4l2_dev,
> @@ -533,6 +533,8 @@ static int cedrus_probe(struct platform_device *pdev)
> v4l2_m2m_unregister_media_controller(dev->m2m_dev);
> err_video:
> video_unregister_device(&dev->vfd);
> +err_media_cleanup:
> + media_device_cleanup(&dev->mdev);
> err_m2m:
This label is left unused. Can you fix this warning please.
Nicolas
> v4l2_m2m_release(dev->m2m_dev);
> err_v4l2:
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] media: cedrus: clean up media device on probe failure
2026-04-27 10:00 [PATCH] media: cedrus: clean up media device on probe failure 박명훈
2026-04-29 19:08 ` Nicolas Dufresne
@ 2026-04-30 3:42 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2026-04-30 3:42 UTC (permalink / raw)
To: 박명훈, Maxime Ripard, Paul Kocialkowski,
Mauro Carvalho Chehab, Greg Kroah-Hartman, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland
Cc: llvm, oe-kbuild-all, linux-media, Myeonghun Pak, linux-staging,
linux-arm-kernel, linux-sunxi, linux-kernel, stable, Ijae Kim
Hi 박명훈,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sunxi/sunxi/for-next]
[also build test WARNING on linus/master v7.1-rc1 next-20260429]
[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/media-cedrus-clean-up-media-device-on-probe-failure/20260427-235223
base: https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
patch link: https://lore.kernel.org/r/20260427100049.29034-1-pakmyeonghun%40bagmyeonghun-ui-MacBookPro.local
patch subject: [PATCH] media: cedrus: clean up media device on probe failure
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20260430/202604301101.Nszhy0yB-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260430/202604301101.Nszhy0yB-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604301101.Nszhy0yB-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/staging/media/sunxi/cedrus/cedrus.c:538:1: warning: unused label 'err_m2m' [-Wunused-label]
538 | err_m2m:
| ^~~~~~~~
1 warning generated.
vim +/err_m2m +538 drivers/staging/media/sunxi/cedrus/cedrus.c
50e761516f2b8c Paul Kocialkowski 2018-09-13 449
50e761516f2b8c Paul Kocialkowski 2018-09-13 450 static int cedrus_probe(struct platform_device *pdev)
50e761516f2b8c Paul Kocialkowski 2018-09-13 451 {
50e761516f2b8c Paul Kocialkowski 2018-09-13 452 struct cedrus_dev *dev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 453 struct video_device *vfd;
50e761516f2b8c Paul Kocialkowski 2018-09-13 454 int ret;
50e761516f2b8c Paul Kocialkowski 2018-09-13 455
50e761516f2b8c Paul Kocialkowski 2018-09-13 456 dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
50e761516f2b8c Paul Kocialkowski 2018-09-13 457 if (!dev)
50e761516f2b8c Paul Kocialkowski 2018-09-13 458 return -ENOMEM;
50e761516f2b8c Paul Kocialkowski 2018-09-13 459
708938f8495147 Dmitry Osipenko 2022-08-18 460 platform_set_drvdata(pdev, dev);
708938f8495147 Dmitry Osipenko 2022-08-18 461
50e761516f2b8c Paul Kocialkowski 2018-09-13 462 dev->vfd = cedrus_video_device;
50e761516f2b8c Paul Kocialkowski 2018-09-13 463 dev->dev = &pdev->dev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 464 dev->pdev = pdev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 465
50e761516f2b8c Paul Kocialkowski 2018-09-13 466 ret = cedrus_hw_probe(dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 467 if (ret) {
50e761516f2b8c Paul Kocialkowski 2018-09-13 468 dev_err(&pdev->dev, "Failed to probe hardware\n");
50e761516f2b8c Paul Kocialkowski 2018-09-13 469 return ret;
50e761516f2b8c Paul Kocialkowski 2018-09-13 470 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 471
50e761516f2b8c Paul Kocialkowski 2018-09-13 472 mutex_init(&dev->dev_mutex);
50e761516f2b8c Paul Kocialkowski 2018-09-13 473
7c38a551bda1b7 Jernej Skrabec 2022-02-01 474 INIT_DELAYED_WORK(&dev->watchdog_work, cedrus_watchdog);
7c38a551bda1b7 Jernej Skrabec 2022-02-01 475
50e761516f2b8c Paul Kocialkowski 2018-09-13 476 ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 477 if (ret) {
50e761516f2b8c Paul Kocialkowski 2018-09-13 478 dev_err(&pdev->dev, "Failed to register V4L2 device\n");
50e761516f2b8c Paul Kocialkowski 2018-09-13 479 return ret;
50e761516f2b8c Paul Kocialkowski 2018-09-13 480 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 481
50e761516f2b8c Paul Kocialkowski 2018-09-13 482 vfd = &dev->vfd;
50e761516f2b8c Paul Kocialkowski 2018-09-13 483 vfd->lock = &dev->dev_mutex;
50e761516f2b8c Paul Kocialkowski 2018-09-13 484 vfd->v4l2_dev = &dev->v4l2_dev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 485
50e761516f2b8c Paul Kocialkowski 2018-09-13 486 snprintf(vfd->name, sizeof(vfd->name), "%s", cedrus_video_device.name);
50e761516f2b8c Paul Kocialkowski 2018-09-13 487 video_set_drvdata(vfd, dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 488
50e761516f2b8c Paul Kocialkowski 2018-09-13 489 dev->m2m_dev = v4l2_m2m_init(&cedrus_m2m_ops);
50e761516f2b8c Paul Kocialkowski 2018-09-13 490 if (IS_ERR(dev->m2m_dev)) {
50e761516f2b8c Paul Kocialkowski 2018-09-13 491 v4l2_err(&dev->v4l2_dev,
50e761516f2b8c Paul Kocialkowski 2018-09-13 492 "Failed to initialize V4L2 M2M device\n");
50e761516f2b8c Paul Kocialkowski 2018-09-13 493 ret = PTR_ERR(dev->m2m_dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 494
bac875349f8525 Jernej Skrabec 2019-04-07 495 goto err_v4l2;
50e761516f2b8c Paul Kocialkowski 2018-09-13 496 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 497
50e761516f2b8c Paul Kocialkowski 2018-09-13 498 dev->mdev.dev = &pdev->dev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 499 strscpy(dev->mdev.model, CEDRUS_NAME, sizeof(dev->mdev.model));
ae0688f659adb1 Hans Verkuil 2019-08-30 500 strscpy(dev->mdev.bus_info, "platform:" CEDRUS_NAME,
ae0688f659adb1 Hans Verkuil 2019-08-30 501 sizeof(dev->mdev.bus_info));
50e761516f2b8c Paul Kocialkowski 2018-09-13 502
50e761516f2b8c Paul Kocialkowski 2018-09-13 503 media_device_init(&dev->mdev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 504 dev->mdev.ops = &cedrus_m2m_media_ops;
50e761516f2b8c Paul Kocialkowski 2018-09-13 505 dev->v4l2_dev.mdev = &dev->mdev;
50e761516f2b8c Paul Kocialkowski 2018-09-13 506
0e17c50fcf6a9e Hans Verkuil 2020-02-03 507 ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0);
50e761516f2b8c Paul Kocialkowski 2018-09-13 508 if (ret) {
50e761516f2b8c Paul Kocialkowski 2018-09-13 509 v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
e8660f15f165e6 Myeonghun Pak 2026-04-27 510 goto err_media_cleanup;
50e761516f2b8c Paul Kocialkowski 2018-09-13 511 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 512
50e761516f2b8c Paul Kocialkowski 2018-09-13 513 v4l2_info(&dev->v4l2_dev,
50e761516f2b8c Paul Kocialkowski 2018-09-13 514 "Device registered as /dev/video%d\n", vfd->num);
50e761516f2b8c Paul Kocialkowski 2018-09-13 515
bac875349f8525 Jernej Skrabec 2019-04-07 516 ret = v4l2_m2m_register_media_controller(dev->m2m_dev, vfd,
bac875349f8525 Jernej Skrabec 2019-04-07 517 MEDIA_ENT_F_PROC_VIDEO_DECODER);
bac875349f8525 Jernej Skrabec 2019-04-07 518 if (ret) {
bac875349f8525 Jernej Skrabec 2019-04-07 519 v4l2_err(&dev->v4l2_dev,
bac875349f8525 Jernej Skrabec 2019-04-07 520 "Failed to initialize V4L2 M2M media controller\n");
bac875349f8525 Jernej Skrabec 2019-04-07 521 goto err_video;
bac875349f8525 Jernej Skrabec 2019-04-07 522 }
bac875349f8525 Jernej Skrabec 2019-04-07 523
50e761516f2b8c Paul Kocialkowski 2018-09-13 524 ret = media_device_register(&dev->mdev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 525 if (ret) {
50e761516f2b8c Paul Kocialkowski 2018-09-13 526 v4l2_err(&dev->v4l2_dev, "Failed to register media device\n");
50e761516f2b8c Paul Kocialkowski 2018-09-13 527 goto err_m2m_mc;
50e761516f2b8c Paul Kocialkowski 2018-09-13 528 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 529
50e761516f2b8c Paul Kocialkowski 2018-09-13 530 return 0;
50e761516f2b8c Paul Kocialkowski 2018-09-13 531
50e761516f2b8c Paul Kocialkowski 2018-09-13 532 err_m2m_mc:
50e761516f2b8c Paul Kocialkowski 2018-09-13 533 v4l2_m2m_unregister_media_controller(dev->m2m_dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 534 err_video:
50e761516f2b8c Paul Kocialkowski 2018-09-13 535 video_unregister_device(&dev->vfd);
e8660f15f165e6 Myeonghun Pak 2026-04-27 536 err_media_cleanup:
e8660f15f165e6 Myeonghun Pak 2026-04-27 537 media_device_cleanup(&dev->mdev);
bac875349f8525 Jernej Skrabec 2019-04-07 @538 err_m2m:
bac875349f8525 Jernej Skrabec 2019-04-07 539 v4l2_m2m_release(dev->m2m_dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 540 err_v4l2:
50e761516f2b8c Paul Kocialkowski 2018-09-13 541 v4l2_device_unregister(&dev->v4l2_dev);
50e761516f2b8c Paul Kocialkowski 2018-09-13 542
50e761516f2b8c Paul Kocialkowski 2018-09-13 543 return ret;
50e761516f2b8c Paul Kocialkowski 2018-09-13 544 }
50e761516f2b8c Paul Kocialkowski 2018-09-13 545
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-30 3:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 10:00 [PATCH] media: cedrus: clean up media device on probe failure 박명훈
2026-04-29 19:08 ` Nicolas Dufresne
2026-04-30 3:42 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox