From 3eaffa4a3fbc783d05bd075a67f5a741bb90a510 Mon Sep 17 00:00:00 2001 From: Ling Xu Date: Fri, 8 Aug 2025 16:01:09 +0530 Subject: [PATCH] Remove fallback to default device open In case of default domain ID, the device open request falls back to DEFAUL_DEVICE which will be defined in the libs to which the application is linked. Remove this legacy fallback logic to avoid any confusion and unexpected observations. Signed-off-by: Ling Xu --- inc/fastrpc_ioctl.h | 18 ------------------ src/adsp_default_listener.c | 23 +++++++++++++---------- src/fastrpc_apps_user.c | 27 ++++++--------------------- src/fastrpc_ioctl.c | 4 ++-- src/gdsprpcd | Bin 0 -> 18544 bytes 5 files changed, 21 insertions(+), 51 deletions(-) create mode 100755 src/gdsprpcd diff --git a/inc/fastrpc_ioctl.h b/inc/fastrpc_ioctl.h index 779d0345..b9cee804 100644 --- a/inc/fastrpc_ioctl.h +++ b/inc/fastrpc_ioctl.h @@ -43,24 +43,6 @@ #define FASTRPC_ATTR_NOVA (256) -/* Secure and default device nodes */ -#if DEFAULT_DOMAIN_ID==ADSP_DOMAIN_ID - #define SECURE_DEVICE "/dev/fastrpc-adsp-secure" - #define DEFAULT_DEVICE "/dev/fastrpc-adsp" -#elif DEFAULT_DOMAIN_ID==MDSP_DOMAIN_ID - #define SECURE_DEVICE "/dev/fastrpc-mdsp-secure" - #define DEFAULT_DEVICE "/dev/fastrpc-mdsp" -#elif DEFAULT_DOMAIN_ID==SDSP_DOMAIN_ID - #define SECURE_DEVICE "/dev/fastrpc-sdsp-secure" - #define DEFAULT_DEVICE "/dev/fastrpc-sdsp" -#elif DEFAULT_DOMAIN_ID==CDSP_DOMAIN_ID - #define SECURE_DEVICE "/dev/fastrpc-cdsp-secure" - #define DEFAULT_DEVICE "/dev/fastrpc-cdsp" -#else - #define SECURE_DEVICE "" - #define DEFAULT_DEVICE "" -#endif - #define INITIALIZE_REMOTE_ARGS(total) int *pfds = NULL; \ unsigned *pattrs = NULL; \ args = (struct fastrpc_invoke_args*) calloc(sizeof(*args), total); \ diff --git a/src/adsp_default_listener.c b/src/adsp_default_listener.c index e37648ae..901018dd 100644 --- a/src/adsp_default_listener.c +++ b/src/adsp_default_listener.c @@ -71,7 +71,7 @@ static domain_t *get_domain_uri(int domain_id) { } static const char *get_secure_device_name(int domain_id) { - const char *name; + const char *name = NULL; int domain = GET_DOMAIN_FROM_EFFEC_DOMAIN_ID(domain_id); switch (domain) { @@ -97,15 +97,15 @@ static const char *get_secure_device_name(int domain_id) { name = GDSP1_SECURE_DEVICE_NAME; break; default: - name = DEFAULT_DEVICE; + FARF(ERROR, "ERROR: %s Invalid domain_id %d", __func__, domain_id); break; } return name; } -static const char *get_default_device_name(int domain_id) { - const char *name; +static const char *get_non_secure_device_name(int domain_id) { + const char *name = NULL; int domain = GET_DOMAIN_FROM_EFFEC_DOMAIN_ID(domain_id); switch (domain) { @@ -131,7 +131,7 @@ static const char *get_default_device_name(int domain_id) { name = GDSP1_DEVICE_NAME; break; default: - name = DEFAULT_DEVICE; + FARF(ERROR, "ERROR: %s Invalid domain_id %d", __func__, domain_id); break; } @@ -152,6 +152,9 @@ static bool fastrpc_dev_exists(const char* dev_name) char *path = NULL; uint64_t len; + if (!dev_name) + return false; + len = snprintf(0, 0, "/dev/%s", dev_name) + 1; if(NULL == (path = (char *)malloc(len * sizeof(char)))) return false; @@ -172,13 +175,13 @@ static bool fastrpc_dev_exists(const char* dev_name) static int fastrpc_wait_for_device(int domain) { int inotify_fd = -1, watch_fd = -1, err = 0; - const char *sec_dev_name = NULL, *def_dev_name = NULL; + const char *sec_dev_name = NULL, *non_sec_dev_name = NULL; struct pollfd pfd[1]; sec_dev_name = get_secure_device_name(domain); - def_dev_name = get_default_device_name(domain); + non_sec_dev_name = get_non_secure_device_name(domain); - if (fastrpc_dev_exists(sec_dev_name) || fastrpc_dev_exists(def_dev_name)) + if (fastrpc_dev_exists(sec_dev_name) || fastrpc_dev_exists(non_sec_dev_name)) return 0; inotify_fd = inotify_init(); @@ -194,7 +197,7 @@ static int fastrpc_wait_for_device(int domain) return AEE_EINVALIDFD; } - if (fastrpc_dev_exists(sec_dev_name) || fastrpc_dev_exists(def_dev_name)) + if (fastrpc_dev_exists(sec_dev_name) || fastrpc_dev_exists(non_sec_dev_name)) goto bail; memset(pfd, 0 , sizeof(pfd)); @@ -231,7 +234,7 @@ static int fastrpc_wait_for_device(int domain) /* Check if the event corresponds to the creation of the device node. */ if (event->wd == watch_fd && (event->mask & IN_CREATE) && ((strcmp(sec_dev_name, event->name) == 0) || - (strcmp(def_dev_name, event->name) == 0))) { + (strcmp(non_sec_dev_name, event->name) == 0))) { /* Device node created, process proceed to open and use it. */ VERIFY_IPRINTF("Device node %s created!\n", event->name); goto bail; /* Exit the loop after device creation is detected. */ diff --git a/src/fastrpc_apps_user.c b/src/fastrpc_apps_user.c index 81fef0ab..4ada79aa 100644 --- a/src/fastrpc_apps_user.c +++ b/src/fastrpc_apps_user.c @@ -3254,7 +3254,7 @@ static void domain_deinit(int domain) { } static const char *get_domain_name(int domain_id) { - const char *name; + const char *name = NULL; int domain = GET_DOMAIN_FROM_EFFEC_DOMAIN_ID(domain_id); switch (domain) { @@ -3280,7 +3280,7 @@ static const char *get_domain_name(int domain_id) { name = GDSP1RPC_DEVICE; break; default: - name = DEFAULT_DEVICE; + FARF(ERROR, "ERROR: %s Invalid domain_id %d", __func__, domain_id); break; } return name; @@ -3305,20 +3305,9 @@ int open_device_node(int domain_id) { dev = open(get_domain_name(domain), O_NONBLOCK); if ((dev < 0) && (errno == ENOENT)) { FARF(RUNTIME_RPC_HIGH, - "Device node %s open failed for domain %d (errno %s)," - "falling back to node %s \n", - get_domain_name(domain), domain, strerror(errno), DEFAULT_DEVICE); - dev = open(DEFAULT_DEVICE, O_NONBLOCK); + "Device node %s open failed for domain %d (errno %s)\n", + get_domain_name(domain), domain, strerror(errno)); } - } else if ((dev < 0) && (errno == EACCES)) { - // Open the default device node if unable to open the - // secure device node due to permissions - FARF(RUNTIME_RPC_HIGH, - "Device node %s open failed for domain %d (errno %s)," - "falling back to node %s \n", - get_secure_domain_name(domain), domain, strerror(errno), - DEFAULT_DEVICE); - dev = open(DEFAULT_DEVICE, O_NONBLOCK); } break; case CDSP_DOMAIN_ID: @@ -3334,13 +3323,9 @@ int open_device_node(int domain_id) { get_domain_name(domain)); dev = open(get_domain_name(domain), O_NONBLOCK); if ((dev < 0) && ((errno == ENOENT) || (errno == EACCES))) { - // Open the default device node if actual device node - // is not present FARF(RUNTIME_RPC_HIGH, - "Device node %s open failed for domain %d (errno %s)," - "falling back to node %s \n", - get_domain_name(domain), domain, strerror(errno), DEFAULT_DEVICE); - dev = open(DEFAULT_DEVICE, O_NONBLOCK); + "Device node %s open failed for domain %d (errno %s)\n", + get_domain_name(domain), domain, strerror(errno)); } } break; diff --git a/src/fastrpc_ioctl.c b/src/fastrpc_ioctl.c index e0329e13..13e43782 100644 --- a/src/fastrpc_ioctl.c +++ b/src/fastrpc_ioctl.c @@ -21,7 +21,7 @@ int is_async_fastrpc_supported(void) { ADSP/SLPI/MDSP/CDSP - Return Secure node */ const char *get_secure_domain_name(int domain_id) { - const char *name; + const char *name = NULL; int domain = GET_DOMAIN_FROM_EFFEC_DOMAIN_ID(domain_id); switch (domain) { @@ -47,7 +47,7 @@ const char *get_secure_domain_name(int domain_id) { name = GDSP1RPC_SECURE_DEVICE; break; default: - name = DEFAULT_DEVICE; + FARF(ERROR, "ERROR: %s Invalid domain_id %d", __func__, domain_id); break; } return name; diff --git a/src/gdsprpcd b/src/gdsprpcd new file mode 100755 index 0000000000000000000000000000000000000000..8408b100069de8b36616c29972efaef3932af41f GIT binary patch literal 18544 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 literal 0 HcmV?d00001