Re: [PATCH 01/25] xor: assert that xor_blocks is not called from interrupt context
Peter Zijlstra <[email protected]>
| Newsgroups | gmane.linux.ports.riscv,gmane.linux.ports.alpha,gmane.linux.kernel,gmane.linux.ports.arm.kernel,gmane.linux.ports.ppc64.devel,gmane.linux.ports.sparc,gmane.linux.uml.devel,gmane.linux.kernel.cryptoapi,gmane.comp.file-systems.btrfs,gmane.linux.kernel.cross-arch,gmane.linux.raid |
|---|---|
| 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 >