On Mon, Dec 5, 2022 at 2:01 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Mon, Dec 05, 2022 at 02:59:42PM +0200, Andy Shevchenko wrote: > > On Mon, Dec 05, 2022 at 01:39:01PM +0100, Bartosz Golaszewski wrote: > > > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > > > > > Linus Torvalds pointed out that using trylock here is wrong. This iteration > > > drops it in favor of unconditional locks but keeps all the fixes that came > > > later. > > > > > > I will also not send it for this release but make it part of the updates PR > > > for v6.2 to give it some time in next. > > > > > > v7 -> v8: > > > - don't use down_read_trylock(), just go straight for a full lock > > > > Yep, it was a good wrap-up explanation. > > But he also suggested to fold NULL check into call_*_locked(). Any points why > you decided not to go that way? > Yes! Every read(), ioctl() and poll() variant extract a different structure from file->private_data. I'm afraid we need to keep those in the callbacks down the stack. I too thought it was a good idea but that won't work. Bart