Re: [PATCH 01/25] xor: assert that xor_blocks is not called from interrupt context
Peter Zijlstra <[email protected]>
| Newsgroups | org.kernel.vger.sparclinux,dev.linux.lists.loongarch,org.infradead.lists.linux-riscv,org.infradead.lists.linux-um,org.kernel.vger.linux-alpha,org.kernel.vger.linux-arch,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel,org.kernel.vger.linux-raid,org.kernel.vger.linux-s390,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Feb 26, 2026 at 07:10:13AM -0800, Christoph Hellwig wrote: > Most of the optimized xor_blocks versions require FPU/vector registers, > which generally are not supported in interrupt context. > > Both callers already are in user context, so enforce this at the highest > level. > > Signed-off-by: Christoph Hellwig <[email protected]> > --- > crypto/xor.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/crypto/xor.c b/crypto/xor.c > index f39621a57bb3..864f3604e867 100644 > --- a/crypto/xor.c > +++ b/crypto/xor.c > @@ -28,6 +28,8 @@ xor_blocks(unsigned int src_count, unsigned int bytes, void *dest, void **srcs) > { > unsigned long *p1, *p2, *p3, *p4; > > + WARN_ON_ONCE(in_interrupt()); Your changelog makes it sound like you want: WARN_ON_ONCE(!in_task()); But perhaps something like so: lockdep_assert_preempt_enabled(); Would do? That ensures we are in preemptible context, which is much the same. That also ensures the cost of this assertion is only paid on debug kernels. > p1 = (unsigned long *) srcs[0]; > if (src_count == 1) { > active_template->do_2(bytes, dest, p1); > -- > 2.47.3 >