On Fri, 2017-09-08 at 00:09 +0200, Hans Verkuil wrote: > On 09/07/2017 08:42 PM, Gustavo Padovan wrote: > > From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxx> > > > > Rename __close_fd() to close_fd() and export it to be able close > > files > > in modules using file descriptors. > > > > The usecase that motivates this change happens in V4L2 where we > > send > > events to userspace with a fd that has file installed in it. But if > > for > > some reason we have to cancel the video stream we need to close the > > files > > that haven't been shared with userspace yet. Thus the export of > > close_fd() becomes necessary. > > > > fd_install() happens when we call an ioctl to queue a buffer, but > > we only > > share the fd with userspace later, and that may happen in a kernel > > thread > > instead. > > This isn't the way to do this. > > You should only create the out fence file descriptor when userspace > dequeues > (i.e. calls VIDIOC_DQEVENT) the BUF_QUEUED event. That's when you > give it to > userspace and at that moment closing the fd is the responsibility of > userspace. > There is no point creating it earlier anyway since userspace can't > get to it > until it dequeues the event. > > It does mean some more work in the V4L2 core since you need to hook > into the > DQEVENT code in order to do this. Right, that makes a lot more sense. I'll change the implementation so it can reflecting that. Thanks. Gustavo