Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f99dd3a authored by Steven Moreland's avatar Steven Moreland
Browse files

libcutils: fallback to /dev/ashmem

For a Q APEX built with use_vendor, rather than using AIDL to talk to
ashmemd, it would directly open /dev/ashmem. R libcutils does ashmem
differently, but in order to allow R-built APEXes to replace this
category of APEXes, falling back to /dev/ashmem.

Fixes: 147363115
Test: tested on Q in swcodec APEX
Change-Id: I625e46b15fee6649251ab9be7a1bbe11c5427525
parent a4b446d7
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -203,19 +203,23 @@ static int __ashmem_open_locked()
{
    static const std::string ashmem_device_path = get_ashmem_device_path();

    int ret;
    struct stat st;

    if (ashmem_device_path.empty()) {
        return -1;
    }

    int fd = TEMP_FAILURE_RETRY(open(ashmem_device_path.c_str(), O_RDWR | O_CLOEXEC));

    // fallback for APEX w/ use_vendor on Q, which would have still used /dev/ashmem
    if (fd < 0) {
        fd = TEMP_FAILURE_RETRY(open("/dev/ashmem", O_RDWR | O_CLOEXEC));
    }

    if (fd < 0) {
        return fd;
    }

    ret = TEMP_FAILURE_RETRY(fstat(fd, &st));
    struct stat st;
    int ret = TEMP_FAILURE_RETRY(fstat(fd, &st));
    if (ret < 0) {
        int save_errno = errno;
        close(fd);