summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stultz <john.stultz@linaro.org>2020-02-13 04:41:30 +0000
committerAmit Pundir <amit.pundir@linaro.org>2020-02-13 20:43:17 +0530
commit80c095d43a9a9a0b981312d5bfe187844fd2ba66 (patch)
treee423a6989249d8504cc867b7add1cf5fc9d757c9
parenta95578fd5955b88aa05acb60c5d8a4edf86bba5a (diff)
TODO: TQFTPSERV: ANDROID: fixes for upstreamHEADmaster
*Commit Message* Change-Id: Ifc70bd7110c24dde3671a6dc3fd88df98ae89b30
-rw-r--r--qcom/tqftpserv/translate.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/qcom/tqftpserv/translate.c b/qcom/tqftpserv/translate.c
index e95dee5..3cf7d14 100644
--- a/qcom/tqftpserv/translate.c
+++ b/qcom/tqftpserv/translate.c
@@ -45,7 +45,11 @@
#define READONLY_PATH "/readonly/firmware/image/"
#define READWRITE_PATH "/readwrite/"
+#ifndef ANDROID
#define FIRMWARE_BASE "/lib/firmware/"
+#else
+#define FIRMWARE_BASE "/vendor/firmware/"
+#endif
/**
* translate_readonly() - open "file" residing with remoteproc firmware
@@ -64,7 +68,7 @@
static int translate_readonly(const char *file)
{
char firmware_value[PATH_MAX];
- char firmware_attr[32];
+ char firmware_attr[PATH_MAX];
char path[PATH_MAX];
struct dirent *de;
int firmware_fd;
@@ -89,11 +93,12 @@ static int translate_readonly(const char *file)
if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
continue;
- if (strlen(de->d_name) + sizeof("/firmware") > sizeof(firmware_attr))
+ if (strlen(de->d_name) + strlen("/firmware") > sizeof(firmware_attr))
continue;
strcpy(firmware_attr, de->d_name);
strcat(firmware_attr, "/firmware");
+
firmware_fd = openat(class_fd, firmware_attr, O_RDONLY);
if (firmware_fd < 0)
continue;
@@ -103,6 +108,7 @@ static int translate_readonly(const char *file)
if (n < 0) {
continue;
}
+ firmware_value[n] = 0;
if (strlen(FIRMWARE_BASE) + strlen(firmware_value) + 1 +
strlen(file) + 1 > sizeof(path))
@@ -142,6 +148,7 @@ static int translate_readwrite(const char *file, int flags)
int ret;
int fd;
+#ifndef ANDROID
ret = mkdir("/tmp/tqftpserv", 0700);
if (ret < 0 && errno != EEXIST) {
warn("failed to create /tmp/tqftpserv");
@@ -153,6 +160,19 @@ static int translate_readwrite(const char *file, int flags)
warn("failed top open /tmp/tqftpserv");
return -1;
}
+#else
+ ret = mkdir("/data/vendor/tmp/tqftpserv", 0700);
+ if (ret < 0 && errno != EEXIST) {
+ warn("failed to create /data/vendor/tmp/tqftpserv");
+ return -1;
+ }
+
+ base = open("/data/vendor/tmp/tqftpserv", O_RDONLY | O_DIRECTORY);
+ if (base < 0) {
+ warn("failed top open /data/vendor/tmp/tqftpserv");
+ return -1;
+ }
+#endif
fd = openat(base, file, flags, 0600);
close(base);