On 2017-05-03 10:35, Philipp Zabel wrote: > On Tue, 2017-05-02 at 19:42 +0200, Peter Rosin wrote: >> On 2017-05-02 17:21, Philipp Zabel wrote: >>> Thank you, I've resent a version with a mutex lock around vmux->active. >> >> I had a bunch of ifs in the above message, so I'm not sure it's needed. >> I would expect there to be a lock outside somewhere in the media layer. >> A cursory look gets me to media-entity.c and media_entity_setup_link() >> which does have a mutex. But I'm no media expert, so maybe there are other >> ways of getting to video_mux_link_setup that I'm not aware of? > > link_setup is always called under the graph mutex of the /dev/media > device. That is why I didn't think about locking too hard. In fact, I > initially wrote this expecting mux_control_get_exclusive to exist and > the mux select/deselect not to be locked at all. > > But set_format is called from an unlocked ioctl on a /dev/v4l-subdev > device. Until your comments I didn't notice that it would be possible to > let link_setup set active = -1 in the middle of the set_format call, > causing it to return garbage. Obviously, now that you point it out. I completely missed set_format... Cheers, peda