Re: [PATCH] media: venus: venc: avoid double free on video register failure

From: Bryan O'Donoghue

Date: Tue May 19 2026 - 12:40:36 EST


On 19/05/2026 15:58, Guangshuo Li wrote:
Hi Bryan,

On Tue, 19 May 2026 at 21:20, Bryan O'Donoghue <bod@xxxxxxxxxx> wrote:

Yes I take your point.

So what you are describing is an error in the software contract from
video_register_device() - if we look throughout the usage of that
function we see either the pattern we already have - not checking for
NULL or checking for NULL - not the double free case you are addressing.

So really the fix - the place to litigate this is not in Venus or Iris
but in video_register_device's cleanup path.

---
bod

Thanks, I agree.

This should probably be handled in the video_register_device() failure
path rather than in each individual driver.

I do not have a good idea yet for how to fix that cleanly in the v4l2
core. Do you have any suggestion?

So if we look at how video_register_device() is used by drivers we have two different behaviours.

1. Trap the error and release the device
2. Trip the error - check for NULL and release the device

Either way the _users_ of video_register_device() right now expect to have to call video_device_release().

So... it seems to me video_register_device() also calling video_release() on some but not all of its error path is not the expected software contract.

So I suggest two things.

1. Audit all users of video_register_device() and confirm the hypothesis
That is callers expect to own vdev and currently everybody tries
to clean it up.

2. If 1 is true then fix video_register_device() to not call
video_device_release()

It either needs to be that or fully delegate ownership of vdev to video_device_register() _and_ update all of the callers.

It may be that < 100% of callers if that is low single digits then worthwhile updating those drivers to match the new semantic.

€0.02

---
bod