[lustre-devel] [PATCH 5/7] lustre/libcfs: discard cfs_trace_allocate_string_buffer()
NeilBrown
neilb at suse.com
Sun Jul 29 20:49:32 PDT 2018
cfs_trace_allocate_string_buffer() is a simple wrapper
around kzalloc() that adds little value. The code is
clearer if we perform the test and the allocation
directly where needed.
Also change the test from '>' to '>=' to ensure we
never try to allocate more than 2 pages, as that seems
to be the intent.
Signed-off-by: NeilBrown <neilb at suse.com>
---
drivers/staging/lustre/lnet/libcfs/module.c | 6 +++--
drivers/staging/lustre/lnet/libcfs/tracefile.c | 28 +++++++++---------------
drivers/staging/lustre/lnet/libcfs/tracefile.h | 1 -
3 files changed, 13 insertions(+), 22 deletions(-)
diff --git a/drivers/staging/lustre/lnet/libcfs/module.c b/drivers/staging/lustre/lnet/libcfs/module.c
index 5d2be941777e..1de83b1997c6 100644
--- a/drivers/staging/lustre/lnet/libcfs/module.c
+++ b/drivers/staging/lustre/lnet/libcfs/module.c
@@ -305,9 +305,9 @@ static int proc_dobitmasks(struct ctl_table *table, int write,
int is_subsys = (mask == &libcfs_subsystem_debug) ? 1 : 0;
int is_printk = (mask == &libcfs_printk) ? 1 : 0;
- rc = cfs_trace_allocate_string_buffer(&tmpstr, tmpstrlen);
- if (rc < 0)
- return rc;
+ tmpstr = kzalloc(tmpstrlen, GFP_KERNEL);
+ if (!tmpstr)
+ return -ENOMEM;
if (!write) {
libcfs_debug_mask2str(tmpstr, tmpstrlen, *mask, is_subsys);
diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.c b/drivers/staging/lustre/lnet/libcfs/tracefile.c
index 40048165fc16..b273107b3815 100644
--- a/drivers/staging/lustre/lnet/libcfs/tracefile.c
+++ b/drivers/staging/lustre/lnet/libcfs/tracefile.c
@@ -963,26 +963,16 @@ int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
}
EXPORT_SYMBOL(cfs_trace_copyout_string);
-int cfs_trace_allocate_string_buffer(char **str, int nob)
-{
- if (nob > 2 * PAGE_SIZE) /* string must be "sensible" */
- return -EINVAL;
-
- *str = kmalloc(nob, GFP_KERNEL | __GFP_ZERO);
- if (!*str)
- return -ENOMEM;
-
- return 0;
-}
-
int cfs_trace_dump_debug_buffer_usrstr(void __user *usr_str, int usr_str_nob)
{
char *str;
int rc;
- rc = cfs_trace_allocate_string_buffer(&str, usr_str_nob + 1);
- if (rc)
- return rc;
+ if (usr_str_nob >= 2 * PAGE_SIZE)
+ return -EINVAL;
+ str = kzalloc(usr_str_nob + 1, GFP_KERNEL);
+ if (!str)
+ return -ENOMEM;
rc = cfs_trace_copyin_string(str, usr_str_nob + 1,
usr_str, usr_str_nob);
@@ -1044,9 +1034,11 @@ int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob)
char *str;
int rc;
- rc = cfs_trace_allocate_string_buffer(&str, usr_str_nob + 1);
- if (rc)
- return rc;
+ if (usr_str_nob >= 2 * PAGE_SIZE)
+ return -EINVAL;
+ str = kzalloc(usr_str_nob + 1, GFP_KERNEL);
+ if (!str)
+ return -ENOMEM;
rc = cfs_trace_copyin_string(str, usr_str_nob + 1,
usr_str, usr_str_nob);
diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.h b/drivers/staging/lustre/lnet/libcfs/tracefile.h
index 82f090fd8dfa..2134549bb3d7 100644
--- a/drivers/staging/lustre/lnet/libcfs/tracefile.h
+++ b/drivers/staging/lustre/lnet/libcfs/tracefile.h
@@ -63,7 +63,6 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
const char __user *usr_buffer, int usr_buffer_nob);
int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
const char *knl_str, char *append);
-int cfs_trace_allocate_string_buffer(char **str, int nob);
int cfs_trace_dump_debug_buffer_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_daemon_command(char *str);
int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob);
More information about the lustre-devel
mailing list