>-----Original Message----- >From: Jacopo Mondi <[email protected]> >Sent: Saturday, August 2, 2025 5:23 PM >To: Mauro Carvalho Chehab <[email protected]>; Devarsh Thakkar ><[email protected]>; Benoit Parrot <[email protected]>; Hans Verkuil ><[email protected]>; Mike Isely <[email protected]>; Laurent Pinchart ><[email protected]>; Hans de Goede <[email protected]>; >Parthiban Veerasooran <[email protected]>; Christian >Gromm <[email protected]>; Greg Kroah-Hartman ><[email protected]>; Alex Shi <[email protected]>; Yanteng Si ><[email protected]>; Dongliang Mu <[email protected]>; Jonathan >Corbet <[email protected]>; Tomasz Figa <[email protected]>; Marek >Szyprowski <[email protected]>; Andy Walls ><[email protected]>; Michael Tretter <[email protected]>; >Pengutronix Kernel Team <[email protected]>; Bin Liu ><[email protected]>; Matthias Brugger <[email protected]>; >AngeloGioacchino Del Regno <[email protected]>; >Dmitry Osipenko <[email protected]>; Thierry Reding ><[email protected]>; Jonathan Hunter <[email protected]>; >Mirela Rabulea <[email protected]>; Shawn Guo ><[email protected]>; Sascha Hauer <[email protected]>; Fabio >Estevam <[email protected]>; Kieran Bingham ><[email protected]>; Michal Simek ><[email protected]>; Ming Qian <[email protected]>; Eagle Zhou ><[email protected]>; Xavier Roumegue (OSS) ><[email protected]>; Philipp Zabel <[email protected]>; >Vikash Garodia <[email protected]>; Dikshita Agarwal ><[email protected]>; Abhinav Kumar <[email protected]>; >Bryan O'Donoghue <[email protected]>; Sylwester Nawrocki ><[email protected]>; Jernej Skrabec <[email protected]>; >Chen-Yu Tsai <[email protected]>; Samuel Holland <[email protected]>; >Daniel Almeida <[email protected]>; Neil Armstrong ><[email protected]>; Kevin Hilman <[email protected]>; Jerome >Brunet <[email protected]>; Martin Blumenstingl ><[email protected]>; Nas Chung ><[email protected]>; Jackson Lee ><[email protected]>; Minghsiu Tsai ><[email protected]>; Houlong Wei <[email protected]>; >Andrew-CT Chen <[email protected]>; Tiffany Lin ><[email protected]>; Yunfei Dong <[email protected]>; >Geert Uytterhoeven <[email protected]>; Magnus Damm ><[email protected]>; Mikhail Ulyanov ><[email protected]>; Jacob Chen <jacob- >[email protected]>; Ezequiel Garcia <[email protected]>; Heiko >Stuebner <[email protected]>; Detlev Casanova ><[email protected]>; Krzysztof Kozlowski <[email protected]>; >Alim Akhtar <[email protected]>; Sylwester Nawrocki ><[email protected]>; Łukasz Stelmach <[email protected]>; >Andrzej Pietrasiewicz <[email protected]>; Jacek Anaszewski ><[email protected]>; Andrzej Hajda <[email protected]>; >Fabien Dessenne <[email protected]>; Hugues Fruchet ><[email protected]>; Jean-Christophe Trotin <jean- >[email protected]>; Maxime Coquelin ><[email protected]>; Alexandre Torgue ><[email protected]>; Nicolas Dufresne ><[email protected]>; Benjamin Gaignard ><[email protected]>; Steve Longerbeam ><[email protected]>; Maxime Ripard <[email protected]>; Paul >Kocialkowski <[email protected]>; Niklas Söderlund ><[email protected]>; Robert Foss <[email protected]>; Todor >Tomov <[email protected]>; Vladimir Zapolskiy ><[email protected]>; Corentin Labbe <[email protected]>; >Sakari Ailus <[email protected]>; Bingbu Cao ><[email protected]>; Tianshu Qiu <[email protected]>; Stanislaw >Gruszka <[email protected]> >Cc: [email protected]; [email protected]; linux- >[email protected]; [email protected]; linux-arm- >[email protected]; [email protected]; linux- >[email protected]; [email protected]; [email protected]; >[email protected]; [email protected]; linux- >[email protected]; [email protected]; linux- >[email protected]; [email protected]; linux- >[email protected]; [email protected]; >Jacopo Mondi <[email protected]> >Subject: [EXT] [PATCH 14/65] media: amphion: Delete v4l2_fh synchronously >in .release() > >Caution: This is an external email. Please take care when clicking links or >opening attachments. When in doubt, report the message using the 'Report >this email' button > > >From: Laurent Pinchart <[email protected]> > >The v4l2_fh initialized and added in vpu_v4l2_open() is delete and cleaned up >when the last reference to the vpu_inst is released. This may happen later than >at vpu_v4l2_close() time. > >Not deleting and cleaning up the v4l2_fh when closing the file handle to the >video device is not ideal, as the v4l2_fh will still be present in the video >device's >fh_list, and will store a copy of events queued to the video device. There may >also be other side effects of keeping alive an object that represents an open >file >handle after the file handle is closed. > >The v4l2_fh instance is embedded in the vpu_inst structure, and is accessed in >two different ways: > >- in vpu_notify_eos() and vpu_notify_source_change(), to queue V4L2 > events to the file handle ; and > >- through the driver to access the v4l2_fh.m2m_ctx pointer. > >The v4l2_fh.m2m_ctx pointer is not touched by v4l2_fh_del() and >v4l2_fh_exit(). It is set to NULL by the driver when closing the file handle, >in >vpu_v4l2_close(). > >The vpu_notify_eos() and vpu_notify_source_change() functions are called in >vpu_set_last_buffer_dequeued() and vdec_handle_resolution_change() >respectively, only if the v4l2_fh.m2m_ctx pointer is not NULL. There is >therefore >a guarantee that no new event will be queued to the v4l2_fh after >vpu_v4l2_close() destroys the m2m_ctx. > >The vpu_notify_eos() function is also called from vpu_vb2_buf_finish(), which >is guaranteed to be called for all queued buffers when >vpu_v4l2_close() calls v4l2_m2m_ctx_release(), and will not be called later. > >It is therefore safe to assume that the driver will not touch the v4l2_fh, >except >to check the m2m_ctx pointer, after vpu_v4l2_close() destroys the m2m_ctx. >We can safely delete and cleanup the v4l2_fh synchronously in >vpu_v4l2_close(). > >Signed-off-by: Laurent Pinchart <[email protected]> >Signed-off-by: Jacopo Mondi <[email protected]>
Reviewed-by: Ming Qian <[email protected]> >--- > drivers/media/platform/amphion/vpu_v4l2.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > >diff --git a/drivers/media/platform/amphion/vpu_v4l2.c >b/drivers/media/platform/amphion/vpu_v4l2.c >index >306d94e0f8e79faaacfa35b28e5786860f7bd1ca..57ca6262bb04b356a85e217ef >51cfb13cb9a0a36 100644 >--- a/drivers/media/platform/amphion/vpu_v4l2.c >+++ b/drivers/media/platform/amphion/vpu_v4l2.c >@@ -724,8 +724,6 @@ static int vpu_v4l2_release(struct vpu_inst *inst) > > v4l2_ctrl_handler_free(&inst->ctrl_handler); > mutex_destroy(&inst->lock); >- v4l2_fh_del(&inst->fh); >- v4l2_fh_exit(&inst->fh); > > call_void_vop(inst, cleanup); > >@@ -794,6 +792,8 @@ int vpu_v4l2_open(struct file *file, struct vpu_inst >*inst) > > return 0; > error: >+ v4l2_fh_del(&inst->fh); >+ v4l2_fh_exit(&inst->fh); > vpu_inst_put(inst); > return ret; > } >@@ -813,6 +813,9 @@ int vpu_v4l2_close(struct file *file) > call_void_vop(inst, release); > vpu_inst_unlock(inst); > >+ v4l2_fh_del(&inst->fh); >+ v4l2_fh_exit(&inst->fh); >+ > vpu_inst_unregister(inst); > vpu_inst_put(inst); > > >-- >2.49.0 _______________________________________________ Mjpeg-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mjpeg-users
