Browse Source

Kernel: Do not return ENOENT for unresolved symbols

ENOENT means "no such file or directory", not "no such symbol". Return EINVAL
instead, as we already do in other cases.
Sergey Bugaev 5 năm trước cách đây
mục cha
commit
3e1ed38d4b
2 tập tin đã thay đổi với 2 bổ sung3 xóa
  1. 1 2
      Base/usr/share/man/man2/module_load.md
  2. 1 1
      Kernel/Process.cpp

+ 1 - 2
Base/usr/share/man/man2/module_load.md

@@ -25,8 +25,7 @@ returns -1 and sets `errno` to describe the error.
 * `EPERM`: The calling process does not have superuser permissions.
 * `EFAULT`: `path` pointed to memory that was not accessible for the caller.
 * `ENOEXEC`: The specified file could not be parsed as an ELF object.
-* `ENOENT`: One or more symbols referred to by the module could not be resolved.
-* `EINVAL`: The module had no `.text` section, or didn't export a `module_init` function.
+* `EINVAL`: One or more symbols referred to by the module could not be resolved, or the module had no `.text` section, or didn't export a `module_init` function.
 * `EEXIST`: A module with the same name was already loaded.
 
 ## See also

+ 1 - 1
Kernel/Process.cpp

@@ -4286,7 +4286,7 @@ int Process::sys$module_load(const char* user_path, size_t path_length)
     });
 
     if (missing_symbols)
-        return -ENOENT;
+        return -EINVAL;
 
     auto* text_base = section_storage_by_name.get(".text").value_or(nullptr);
     if (!text_base) {