On Tue, May 9, 2023 at 1:03 PM Bharath SM <bharathsm.hsk@xxxxxxxxx> wrote: > > Ack by me. > > On Tue, May 9, 2023 at 12:05 PM Steve French <smfrench@xxxxxxxxx> wrote: > > > > In investigating a failure with xfstest generic/392 it > > was noticed that mounts were reusing a superblock that should > > already have been freed. This turned out to be related to > > deferred close files keeping a reference count until the > > closetimeo expired. > > > > Currently the only way an fs knows that mount is beginning is > > when force unmount is called, but when this, ie umount_begin(), > > is called all deferred close files on the share (tree > > connection) should be closed immediately (unless shared by > > another mount) to avoid using excess resources on the server > > and to avoid reusing a superblock which should already be freed. > > > > In umount_begin, close all deferred close handles for that > > share if this is the last mount using that share on this > > client (ie send the SMB3 close request over the wire for those > > that have been already closed by the app but that we have > > kept a handle lease open for and have not sent closes to the > > server for yet). > > > > Reported-by: David Howells <dhowells@xxxxxxxxxx> > > Cc: <stable@xxxxxxxxxxxxxxx> > > Fixes: 78c09634f7dc ("Cifs: Fix kernel oops caused by deferred close > > for files.") > > > > See attached > > -- > > Thanks, > > > > Steve cifs_put_tcon sounds like a more logical place to do this. When the ref count has dropped to 0. -- Regards, Shyam