+0
−3
Loading
When DMA_ATTR_NO_KERNEL_MAPPING is passed to dma_alloc_attrs(), the returned CPU address is not a pointer to the allocated memory but an opaque handle (e.g. struct page *). Coherent<T> (or CoherentAllocation<T> respectively) stores this value as NonNull<T> and exposes methods that dereference it and even modify its contents. Remove the flag from the public attrs module such that drivers cannot pass it to Coherent<T> (or CoherentAllocation<T> respectively) in the first place. Instead DMA_ATTR_NO_KERNEL_MAPPING can be supported with an additional opaque type (e.g. CoherentHandle) which does not provide access to the allocated memory. Cc: stable@vger.kernel.org Fixes: ad2907b4 ("rust: add dma coherent allocator abstraction") Signed-off-by:Danilo Krummrich <dakr@kernel.org> Reviewed-by:
Alice Ryhl <aliceryhl@google.com> Reviewed-by:
Alexandre Courbot <acourbot@nvidia.com> Reviewed-by:
Gary Guo <gary@garyguo.net> Link: https://patch.msgid.link/20260321172749.592387-1-dakr@kernel.org Signed-off-by:
Alexandre Courbot <acourbot@nvidia.com>