]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
loop: fix concurrent lo_open/lo_release
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Jan 2018 00:26:00 +0000 (16:26 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Feb 2018 16:05:33 +0000 (17:05 +0100)
commit56bc086358cac1a2949783646eabd57447b9d672
tree418b8b120580ce6ec0e82cab2d7ac99d591bca29
parent6c6f924f9c6294944ee6efb1bbd8cdb853582e50
loop: fix concurrent lo_open/lo_release

commit ae6650163c66a7eff1acd6eb8b0f752dcfa8eba5 upstream.

范龙飞 reports that KASAN can report a use-after-free in __lock_acquire.
The reason is due to insufficient serialization in lo_release(), which
will continue to use the loop device even after it has decremented the
lo_refcnt to zero.

In the meantime, another process can come in, open the loop device
again as it is being shut down. Confusion ensues.

Reported-by: 范龙飞 <long7573@126.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/loop.c