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
This commit is contained in:
parent
a4b446d766
commit
4f99dd3af1
1 changed files with 8 additions and 4 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue