On Wed 20-03-19 16:16:01, Greg KH wrote:
On Wed, Mar 20, 2019 at 04:12:31PM +0100, Greg KH wrote:
On Wed, Mar 20, 2019 at 01:58:06PM +0100, Jan Kara wrote:
Hello,
commit 310ca162d77 "block/loop: Use global lock for ioctl() operation." has been pushed to multiple stable trees. This patch is a part of larger series that overhauls the locking inside loopback device upstream and for 4.4, 4.9, and 4.14 stable trees only this patch from the series is applied. Our testing now has shown [1] that the patch alone makes present deadlocks inside loopback driver more likely (the openqa test in our infrastructure didn't hit the deadlock before whereas with the new kernel it hits it reliably every time). So I would suggest we revert 310ca162d77 from 4.4, 4.9, and 4.14 kernels.
Ugh, ok.
Another option would be to backport other locking fixes for the loop device but honestly I don't think that's a stable material - never heard of real users hitting problems, only syzkaller could, and we are still fixing up some small glitches resulting from that rework...
I tried to backport a number of the loop fixes, and odds are I am the one that grabbed this. There are other loop locking fixes in the stable releases, I don't know if I can just revert this one, let me check...
Nope, does not revert cleanly due to the other loop fixes I added after this one.
So either I back out _all_ of the loop patches, or we leave what we have now, or we add the proper fixes to get things working. I'd like to have this all work properly, so why not just have me backport the needed fixes that are upstream?
Sure, that is another option. Be sure to include recent fixups:
40853d6fc619 "loop: do not print warn message if partition scan is successful" 758a58d0bc67 "loop: set GENHD_FL_NO_PART_SCAN after blkdev_reread_part()"
otherwise you need commits:
b1ab5fa309e6 "block/loop: Don't grab "struct file" for vfs_getattr() operation." ... 628bd8594709 "loop: Fix double mutex_unlock(&loop_ctl_mutex) in loop_control_ioctl()"
to drivers/block/loop.c. It's just that my experience tells me that when there were 15 original patches in the series and then 3 followup fixups, the series is not usually worth the risk for something nobody hit besides fuzzers...
Honza