On 2022/7/22 16:45, Ming Lei wrote: > From: Christoph Hellwig <hch@xxxxxx> > > __ublk_destroy_dev() is called for handling error in ublk_add_dev(), > but either tagset isn't allocated or mutex isn't initialized. > > So fix the issue by letting replacing ublk_add_dev with a > ublk_add_tag_set function that is much more limited in scope and > instead unwind every single step directly in ublk_ctrl_add_dev. > To allow for this refactor the device freeing so that there is > a helper for freeing the device number instead of coupling that > with freeing the mutex and the memory. > > Note that this now copies the dev_info to userspace before adding > the character device. This not only simplifies the erro handling > in ublk_ctrl_add_dev, but also means that the character device > can only be seen by userspace if the device addition succeeded. > > Based on a patch from Ming Lei. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- Reviewed-by: ZiyangZhang <ZiyangZhang@xxxxxxxxxxxxxxxxx>