Commit 200f9337 authored by Luis Chamberlain's avatar Luis Chamberlain Committed by Jens Axboe
Browse files

loop: be paranoid on exit and prevent new additions / removals



Be pedantic on removal as well and hold the mutex.
This should prevent uses of addition while we exit.

Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent a67549c8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2404,6 +2404,8 @@ static void __exit loop_exit(void)

	range = max_loop ? max_loop << part_shift : 1UL << MINORBITS;

	mutex_lock(&loop_ctl_mutex);

	idr_for_each(&loop_index_idr, &loop_exit_cb, NULL);
	idr_destroy(&loop_index_idr);

@@ -2411,6 +2413,8 @@ static void __exit loop_exit(void)
	unregister_blkdev(LOOP_MAJOR, "loop");

	misc_deregister(&loop_misc);

	mutex_unlock(&loop_ctl_mutex);
}

module_init(loop_init);