On 3/26/20 5:17 PM, Hans Verkuil wrote: > On 3/26/20 3:30 AM, Seungchul Kim wrote: > > On 3/25/20 5:54 PM, Hans Verkuil wrote: > >> On 3/23/20 3:30 AM, Seungchul Kim wrote: > >>> v4l2_fh struct define differently by CONFIG_V4L2_MEM2MEM_DEV. > >>> If some vendors use CONFIG_V4L2_MEM2MEM_DEV by module, it can make > >>> the mismatch of v4l2_fh sturct. > >>> > >>> By the mismatch, the following error occurs. > >>> =============================== > >>> [ 7.533506] v4l2_mem2mem: disagrees about version of symbol > >> video_devdata > >>> [ 7.533594] v4l2_mem2mem: Unknown symbol video_devdata (err -22) > >>> [ 7.535319] v4l2_mem2mem: disagrees about version of symbol > >>> v4l2_event_pending > >>> [ 7.542532] v4l2_mem2mem: Unknown symbol v4l2_event_pending (err -22) > >>> =============================== > >>> > >>> So v4l2_fh struct is modified to does not have dependency for > >>> CONFIG_V4L2_MEM2MEM_DEV. > >>> > >>> Signed-off-by: Seungchul Kim <sc377.kim@xxxxxxxxxxx> > >>> --- > >>> include/media/v4l2-fh.h | 2 -- > >>> 1 file changed, 2 deletions(-) > >>> > >>> diff --git a/include/media/v4l2-fh.h b/include/media/v4l2-fh.h index > >>> 53b4dbb..b5b3e00 100644 > >>> --- a/include/media/v4l2-fh.h > >>> +++ b/include/media/v4l2-fh.h > >>> @@ -53,9 +53,7 @@ struct v4l2_fh { > >>> unsigned int navailable; > >>> u32 sequence; > >>> > >>> -#if IS_ENABLED(CONFIG_V4L2_MEM2MEM_DEV) > >>> struct v4l2_m2m_ctx *m2m_ctx; > >>> -#endif > >> > >> This is a good change, but please also remove the same #if from > >> v4l2_ioctl_get_lock() in drivers/media/v4l2-core/v4l2-ioctl.c. That > >> is now no longer needed there either and without removing that those > >> vendor drivers would be using the wrong lock. > >> > >> Regards, > >> > >> Hans > > > > Thank you for your comment. I worried about the same thing with you. > > But vfh->m2m_ctx on v4l2_ioctl_get_lock() is always null without > > CONFIG_V4L2_MEM2MEM_DEV, because m2m_ctx of v4l2-fh is initialized > > only in v4l2_mem2mem.c. > > Therefore it doesn't have a problem using an wrong lock regardless of > > modification, so I did not fix it. > > It is: if your out-of-tree driver sets CONFIG_V4L2_MEM2MEM_DEV, then I > assume it will set vfh->m2m_ctx, and so the v4l2 core should also return > the right lock for that out-of-tree driver. > > But in any case, if m2m_ctx is always part of v4l2-fh.h, then that #if in > v4l2-ioctl.c has become pointless and should be removed in any case. > > Regards, > > Hans I agree with you, so I will update a patch, soon