summaryrefslogtreecommitdiff
path: root/arch/m68k/mac/oss.c
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2023-10-20 18:42:15 +0300
committerChristoph Hellwig <hch@lst.de>2023-10-23 08:51:36 +0300
commit1132a1dc053ef4391bb09fdb2242a628615291bb (patch)
treecd7886e229c8ce89e6ce405ce8ffde73512afd1f /arch/m68k/mac/oss.c
parent8126cab004bab7b9d58b156435350379d88e8539 (diff)
downloadlinux-1132a1dc053ef4391bb09fdb2242a628615291bb.tar.xz
swiotlb: rewrite comment explaining why the source is preserved on DMA_FROM_DEVICE
Rewrite the comment explaining why swiotlb copies the original buffer to the TLB buffer before initiating DMA *from* the device, i.e. before the device DMAs into the TLB buffer. The existing comment's argument that preserving the original data can prevent a kernel memory leak is bogus. If the driver that triggered the mapping _knows_ that the device will overwrite the entire mapping, or the driver will consume only the written parts, then copying from the original memory is completely pointless. If neither of the above holds true, then copying from the original adds value only if preserving the data is necessary for functional correctness, or the driver explicitly initialized the original memory. If the driver didn't initialize the memory, then copying the original buffer to the TLB buffer simply changes what kernel data is leaked to user space. Writing the entire TLB buffer _does_ prevent leaking stale TLB buffer data from a previous bounce, but that can be achieved by simply zeroing the TLB buffer when grabbing a slot. The real reason swiotlb ended up initializing the TLB buffer with the original buffer is that it's necessary to make swiotlb operate as transparently as possible, i.e. to behave as closely as possible to hardware, and to avoid corrupting the original buffer, e.g. if the driver knows the device will do partial writes and is relying on the unwritten data to be preserved. Reviewed-by: Robin Murphy <robin.murphy@arm.com> Link: https://lore.kernel.org/all/ZN5elYQ5szQndN8n@google.com Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'arch/m68k/mac/oss.c')
0 files changed, 0 insertions, 0 deletions