On Fri, May 11, 2018 at 02:05:22PM -0500, Uma Krishnan wrote: > When a superpipe process that makes use of virtual LUNs is terminated or > killed abruptly, there is a possibility that the cxlflash driver could > hang and deprive other operations on the adapter. > > The release fop registered to be invoked on a context close, detaches > every LUN associated with the context. The underlying service to detach > the LUN assumes it has been called with the read semaphore held, and > releases the semaphore before any operation that could be time consuming. > > When invoked without holding the read semaphore, an opportunity is created > for the semaphore's count to become negative when it is temporarily > released during one of these potential lengthy operations. This negative > count results in subsequent acquisition attempts taking forever, leading > to the hang. > > To support the current design point of holding the semaphore on the > ioctl() paths, the release fop should acquire it before invoking any > ioctl services. > > Signed-off-by: Uma Krishnan <ukrishn@xxxxxxxxxxxxxxxxxx> Acked-by: Matthew R. Ochs <mrochs@xxxxxxxxxxxxxxxxxx>