summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPetr Tesarik <petrtesarik@huaweicloud.com>2023-11-02 12:36:49 +0300
committerChristoph Hellwig <hch@lst.de>2023-11-03 11:33:45 +0300
commita5e3b127455d073f146a2a4ea3e7117635d34c5c (patch)
treeed771584381cacd079132e2fca843c2f0df90020 /lib
parent8f6f76a6a29f36d2f3e4510d0bde5046672f6924 (diff)
downloadlinux-a5e3b127455d073f146a2a4ea3e7117635d34c5c.tar.xz
swiotlb: do not free decrypted pages if dynamic
Fix these two error paths: 1. When set_memory_decrypted() fails, pages may be left fully or partially decrypted. 2. Decrypted pages may be freed if swiotlb_alloc_tlb() determines that the physical address is too high. To fix the first issue, call set_memory_encrypted() on the allocated region after a failed decryption attempt. If that also fails, leak the pages. To fix the second issue, check that the TLB physical address is below the requested limit before decrypting. Let the caller differentiate between unsuitable physical address (=> retry from a lower zone) and allocation failures (=> no point in retrying). Cc: stable@vger.kernel.org Fixes: 79636caad361 ("swiotlb: if swiotlb is full, fall back to a transient memory pool") Signed-off-by: Petr Tesarik <petr.tesarik1@huawei-partners.com> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions