summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/module/main.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 81f9df8859dc..120e51550a88 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -779,14 +779,16 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
struct module *mod;
char name[MODULE_NAME_LEN];
char buf[MODULE_FLAGS_BUF_SIZE];
- int ret, forced = 0;
+ int ret, len, forced = 0;
if (!capable(CAP_SYS_MODULE) || modules_disabled)
return -EPERM;
- if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0)
- return -EFAULT;
- name[MODULE_NAME_LEN-1] = '\0';
+ len = strncpy_from_user(name, name_user, MODULE_NAME_LEN);
+ if (len == 0 || len == MODULE_NAME_LEN)
+ return -ENOENT;
+ if (len < 0)
+ return len;
audit_log_kern_module(name);