From: Philipp Reisner > Sent: 12 August 2019 12:53 > Hi Jens, > > Please have a look. > > With fee109901f392 Eric W. Biederman changed drbd to use send_sig() > instead of force_sig(). That was part of a series that did this change > in multiple call sites tree wide. Which, by accident broke drbd, since > the signals are _not_ allowed by default. That got released with v5.2. > > On July 29 Christoph Böhmwalder sent a patch that adds two > allow_signal()s to fix drbd. > > Then David Laight points out that he has code that can not deal > with the send_sig() instead of force_sig() because allowed signals > can be sent from user-space as well. > I assume that David is referring to out of tree code, so I fear it > is up to him to fix that to work with upstream, or initiate a > revert of Eric's change. While our code is 'out of tree' (you really don't want it - and since it still uses force_sig() is fine) I suspect that the 'drdb' code (with Christoph's allow_signal() patch) now loops in kernel if a user sends it a signal. If the driver (eg drdb) is using (say) SIGINT to break a thread out of (say) a blocking kernel_accept() call then it can detect the unexpected signal (maybe double-checking with signal_pending()) but I don't think it can clear down the pending signal so that kernel_accept() blocks again. > Jens, please consider sending Christoph's path to Linus for merge in > this cycle, or let us know how you think we should proceed. I'm not sure what the 'correct' solution is. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)