On Fri, Apr 15, 2022 at 03:51:54PM +0800, Herbert Xu wrote: > On Fri, Apr 15, 2022 at 09:49:12AM +0200, Ard Biesheuvel wrote: > > I'm not sure I understand what would go wrong if that assumption no > > longer holds. > > It's very simple, we don't do anything to the pointer returned > by kmalloc before returning it as a tfm or other object with > an alignment of CRYPTO_MINALIGN. IOW if kmalloc starts returning > pointers that are not aligned to CRYPTO_MINALIGN then we'd be > lying to the compiler. I agree that it would be lying to the compiler, but I don't think this matters for arm64 where the CPU can do unaligned accesses just fine. We don't even end up with unaligned accesses here. Let's say we have: struct x { ... } __attribute__ ((__aligned__ (128))); and the kmalloc(sizeof(struct x)) returns a 64-byte aligned pointer. The compiler-generated code won't have any problem on arm64 accessing the struct x members. As I said a few times, it's not affecting any other architecture and not breaking arm64 either. Anyway, let's agree to disagree. I'll look into keeping CRYPTO_MINALIGN as ARCH_KMALLOC_MINALIGN and introduce a CRYPTO_DMA_MINALIGN (or just use ARCH_DMA_MINALIGN directly) together with something like Linus' dma_kmalloc() in places where an object aligned to ARCH_DMA_MINALIGN is needed in the crypto code. -- Catalin