trusty: Remove explicit page-alignment of mmap and dmabuf allocations

bionic hard codes the PAGE_SIZE macro as 4096. This is going away as
Android begins to support larger page sizes.

trusty uses PAGE_SIZE to round up the allocation size of the DMA
buffers and mmap sizes. This is not explicitly needed since the kernel
will always give you a page-aligned and page-sized multiple allocation
when allocating a dmabuf or mmap-ing.

Remove this PAGE_SIZE usage from TrustyApp, app_fuzzer, coverage,
line-coverage, modulewrapper.

Bug: 294914413
Test: Boot test on 16k device
Change-Id: Iad922e0a152cb80db2e59e696d7556602fd17d67
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
This commit is contained in:
Kalesh Singh 2023-09-06 11:32:53 -07:00
parent c519d1dde2
commit 623d140cc0
5 changed files with 7 additions and 28 deletions

View file

@ -43,10 +43,6 @@ static struct uuid apploader_uuid = {
{0xb5, 0xe8, 0xa7, 0xe9, 0xef, 0x17, 0x3a, 0x97},
};
static inline uintptr_t RoundPageUp(uintptr_t val) {
return (val + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
}
static bool SendLoadMsg(int chan, int dma_buf, size_t dma_buf_size) {
apploader_header hdr = {
.cmd = APPLOADER_CMD_LOAD_APPLICATION,
@ -107,7 +103,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
android::trusty::fuzz::Abort();
}
uint64_t shm_len = size ? RoundPageUp(size) : PAGE_SIZE;
uint64_t shm_len = size ? size : 4096;
BufferAllocator alloc;
unique_fd dma_buf(alloc.Alloc(kDmabufSystemHeapName, shm_len));
if (dma_buf < 0) {

View file

@ -30,10 +30,6 @@ namespace confirmationui {
using ::android::base::unique_fd;
static inline uintptr_t RoundPageUp(uintptr_t val) {
return (val + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
}
ssize_t TrustyApp::TrustyRpc(const uint8_t* obegin, const uint8_t* oend, uint8_t* ibegin,
uint8_t* iend) {
uint32_t olen = oend - obegin;
@ -99,7 +95,7 @@ TrustyApp::TrustyApp(const std::string& path, const std::string& appname)
return;
}
uint32_t shm_len = RoundPageUp(CONFIRMATIONUI_MAX_MSG_SIZE);
uint32_t shm_len = CONFIRMATIONUI_MAX_MSG_SIZE;
BufferAllocator allocator;
unique_fd dma_buf(allocator.Alloc("system", shm_len));
if (dma_buf < 0) {

View file

@ -43,10 +43,6 @@ using std::string;
using std::to_string;
using std::unique_ptr;
static inline uintptr_t RoundPageUp(uintptr_t val) {
return (val + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
}
CoverageRecord::CoverageRecord(string tipc_dev, struct uuid* uuid)
: tipc_dev_(std::move(tipc_dev)),
coverage_srv_fd_(-1),
@ -136,7 +132,7 @@ Result<void> CoverageRecord::Open() {
return Error() << "failed to open coverage client: " << ret.error();
}
record_len_ = resp.open_args.record_len;
shm_len_ = RoundPageUp(record_len_);
shm_len_ = record_len_;
BufferAllocator allocator;

View file

@ -50,10 +50,6 @@ using ::android::base::ErrnoError;
using ::android::base::Error;
using ::std::string;
static inline uintptr_t RoundPageUp(uintptr_t val) {
return (val + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
}
CoverageRecord::CoverageRecord(string tipc_dev, struct uuid* uuid)
: tipc_dev_(std::move(tipc_dev)),
coverage_srv_fd_(-1),
@ -129,7 +125,7 @@ Result<void> CoverageRecord::Open(int fd) {
return Error() << "failed to open coverage client: " << ret.error();
}
record_len_ = resp.open_args.record_len;
shm_len_ = RoundPageUp(record_len_);
shm_len_ = record_len_;
BufferAllocator allocator;

View file

@ -31,6 +31,7 @@
#include <sys/mman.h>
#include <trusty/tipc.h>
#include <unistd.h>
#include <algorithm>
#include "acvp_ipc.h"
@ -42,9 +43,6 @@ using android::base::Result;
using android::base::unique_fd;
using android::base::WriteFully;
static inline size_t AlignUpToPage(size_t size) {
return (size + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
}
namespace {
@ -104,15 +102,12 @@ Result<void> ModuleWrapper::SendMessage(bssl::Span<const bssl::Span<const uint8_
struct acvp_req request;
request.num_args = args.size();
size_t total_args_size = 0;
int total_args_size = 0;
for (auto arg : args) {
total_args_size += arg.size();
}
shm_size_ = ACVP_MIN_SHARED_MEMORY;
if (total_args_size > shm_size_) {
shm_size_ = AlignUpToPage(total_args_size);
}
shm_size_ = std::max(ACVP_MIN_SHARED_MEMORY, total_args_size);
request.buffer_size = shm_size_;
struct iovec iov = {