On Sat, Apr 18, 2020 at 01:58:45PM +0800, Tiezhu Yang wrote:
On 04/18/2020 01:48 PM, Luis Chamberlain wrote:OK I see now I had put:
On Fri, Apr 17, 2020 at 11:45 PM Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote:Yes, kmod_test_0001_driver() in tools/testing/selftests/kmod/kmod.sh tests
On Sat, Apr 18, 2020 at 01:19:59PM +0800, Tiezhu Yang wrote:Also, are we testing for this condition yet? If not can we add one?
If module name is empty, it is better to return directly at the beginningI'd rather we just use something standard like -EINVAL.
of request_module() without doing the needless call_modprobe() operation.
Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx>
---
kernel/kmod.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/kernel/kmod.c b/kernel/kmod.c
index 3cd075c..5851444 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -28,6 +28,8 @@
#include <trace/events/module.h>
+#define MODULE_NOT_FOUND 256
+
/*
* Assuming:
*
@@ -144,6 +146,9 @@ int __request_module(bool wait, const char *fmt, ...)
if (ret >= MODULE_NAME_LEN)
return -ENAMETOOLONG;
+ if (strlen(module_name) == 0)
+ return MODULE_NOT_FOUND;
What do we return if its not found? Then use that value.
this case and expects result MODULE_NOT_FOUND which is 256.
errno_name_to_val()
{
case "$1" in
# kmod calls modprobe and upon of a module not found
# modprobe returns just 1... However in the
# kernel we *sometimes* see 256...
MODULE_NOT_FOUND)
echo 256;;
I found that through testing, however there was nothing set in stone,
nothing documented. While you are at it, can you find the places where
this is returned in the kernel code? We should clear this up and
se things straight. We cannot change what we gave userspace already
though.
Luis