In the previous implementation, when the user did not enter any value in
"/sys/module/firmware_class/parameters/path", it would incorrectly search
for DDP packages under "/".

This commit fixes this issue.

Fixes: 9207f93640a7 ("net/ice: support custom search path for DDP package")

Signed-off-by: Zhichao Zeng <zhichaox.z...@intel.com>

v2: change return code
---
 drivers/net/ice/ice_ethdev.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index d5e94a6685..cf06ac58ce 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -1917,18 +1917,14 @@ static int ice_read_customized_path(char *pkg_file, 
uint16_t buff_len)
        }
 
        n = read(fp, pkg_file, buff_len - 1);
-       if (n == 0) {
-               close(fp);
-               return -EIO;
+       if (n > 0) {
+               if (pkg_file[n - 1] == '\n')
+                       n--;
+               pkg_file[n] = '\0';
        }
 
-       if (pkg_file[n - 1] == '\n')
-               n--;
-
-       pkg_file[n] = '\0';
-
        close(fp);
-       return 0;
+       return n;
 }
 
 int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn)
@@ -1956,7 +1952,7 @@ int ice_load_pkg(struct ice_adapter *adapter, bool 
use_dsn, uint64_t dsn)
        snprintf(opt_ddp_filename, ICE_MAX_PKG_FILENAME_SIZE,
                "ice-%016" PRIx64 ".pkg", dsn);
 
-       if (ice_read_customized_path(customized_path, 
ICE_MAX_PKG_FILENAME_SIZE) == 0) {
+       if (ice_read_customized_path(customized_path, 
ICE_MAX_PKG_FILENAME_SIZE) > 0) {
                if (use_dsn) {
                        snprintf(pkg_file, RTE_DIM(pkg_file), "%s/%s",
                                        customized_path, opt_ddp_filename);
-- 
2.34.1

Reply via email to