Commit 5a08f067 authored by LABBE Corentin's avatar LABBE Corentin Committed by Greg Kroah-Hartman

staging: lustre: Annotate user buffer with __user

Fix the warning reported by sparse on drivers/staging/lustre/lnet/lnet/router_proc.c
warning: incorrect type in argument 4 (different address spaces)
The correction is to annotate all user buffer variable by __user
Signed-off-by: default avatarLABBE Corentin <clabbe.montjoie@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f60705fd
...@@ -265,9 +265,9 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata, ...@@ -265,9 +265,9 @@ int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
/* other external symbols that tracefile provides: */ /* other external symbols that tracefile provides: */
int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob, int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
const char *usr_buffer, int usr_buffer_nob); const char __user *usr_buffer, int usr_buffer_nob);
int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob, int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
const char *knl_buffer, char *append); const char *knl_buffer, char *append);
#define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log" #define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log"
......
...@@ -90,9 +90,10 @@ enum { ...@@ -90,9 +90,10 @@ enum {
#define LNET_PROC_VERSION(v) ((unsigned int)((v) & LNET_PROC_VER_MASK)) #define LNET_PROC_VERSION(v) ((unsigned int)((v) & LNET_PROC_VER_MASK))
static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer, static int proc_call_handler(void *data, int write, loff_t *ppos,
size_t *lenp, int (*handler)(void *data, int write, void __user *buffer, size_t *lenp,
loff_t pos, void *buffer, int len)) int (*handler)(void *data, int write,
loff_t pos, void __user *buffer, int len))
{ {
int rc = handler(data, write, *ppos, buffer, *lenp); int rc = handler(data, write, *ppos, buffer, *lenp);
...@@ -109,7 +110,7 @@ static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer, ...@@ -109,7 +110,7 @@ static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer,
} }
static int __proc_lnet_stats(void *data, int write, static int __proc_lnet_stats(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
int rc; int rc;
lnet_counters_t *ctrs; lnet_counters_t *ctrs;
...@@ -592,7 +593,7 @@ int proc_lnet_peers(struct ctl_table *table, int write, void __user *buffer, ...@@ -592,7 +593,7 @@ int proc_lnet_peers(struct ctl_table *table, int write, void __user *buffer,
} }
static int __proc_lnet_buffers(void *data, int write, static int __proc_lnet_buffers(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
char *s; char *s;
char *tmpstr; char *tmpstr;
...@@ -815,7 +816,7 @@ static struct lnet_portal_rotors portal_rotors[] = { ...@@ -815,7 +816,7 @@ static struct lnet_portal_rotors portal_rotors[] = {
extern int portal_rotor; extern int portal_rotor;
static int __proc_lnet_portal_rotor(void *data, int write, static int __proc_lnet_portal_rotor(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
const int buf_len = 128; const int buf_len = 128;
char *buf; char *buf;
......
...@@ -98,9 +98,10 @@ enum { ...@@ -98,9 +98,10 @@ enum {
PSDEV_LNET_FAIL_VAL, /* userdata for fail loc */ PSDEV_LNET_FAIL_VAL, /* userdata for fail loc */
}; };
static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer, static int proc_call_handler(void *data, int write, loff_t *ppos,
size_t *lenp, int (*handler)(void *data, int write, void __user *buffer, size_t *lenp,
loff_t pos, void *buffer, int len)) int (*handler)(void *data, int write,
loff_t pos, void __user *buffer, int len))
{ {
int rc = handler(data, write, *ppos, buffer, *lenp); int rc = handler(data, write, *ppos, buffer, *lenp);
...@@ -117,7 +118,7 @@ static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer, ...@@ -117,7 +118,7 @@ static int proc_call_handler(void *data, int write, loff_t *ppos, void *buffer,
} }
static int __proc_dobitmasks(void *data, int write, static int __proc_dobitmasks(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
const int tmpstrlen = 512; const int tmpstrlen = 512;
char *tmpstr; char *tmpstr;
...@@ -168,7 +169,7 @@ static int min_watchdog_ratelimit = 0; /* disable ratelimiting */ ...@@ -168,7 +169,7 @@ static int min_watchdog_ratelimit = 0; /* disable ratelimiting */
static int max_watchdog_ratelimit = (24*60*60); /* limit to once per day */ static int max_watchdog_ratelimit = (24*60*60); /* limit to once per day */
static int __proc_dump_kernel(void *data, int write, static int __proc_dump_kernel(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
if (!write) if (!write)
return 0; return 0;
...@@ -184,7 +185,7 @@ static int proc_dump_kernel(struct ctl_table *table, int write, ...@@ -184,7 +185,7 @@ static int proc_dump_kernel(struct ctl_table *table, int write,
} }
static int __proc_daemon_file(void *data, int write, static int __proc_daemon_file(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
if (!write) { if (!write) {
int len = strlen(cfs_tracefile); int len = strlen(cfs_tracefile);
...@@ -207,7 +208,7 @@ static int proc_daemon_file(struct ctl_table *table, int write, ...@@ -207,7 +208,7 @@ static int proc_daemon_file(struct ctl_table *table, int write,
} }
static int __proc_debug_mb(void *data, int write, static int __proc_debug_mb(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
if (!write) { if (!write) {
char tmpstr[32]; char tmpstr[32];
...@@ -344,7 +345,7 @@ int proc_fail_loc(struct ctl_table *table, int write, void __user *buffer, ...@@ -344,7 +345,7 @@ int proc_fail_loc(struct ctl_table *table, int write, void __user *buffer,
} }
static int __proc_cpt_table(void *data, int write, static int __proc_cpt_table(void *data, int write,
loff_t pos, void *buffer, int nob) loff_t pos, void __user *buffer, int nob)
{ {
char *buf = NULL; char *buf = NULL;
int len = 4096; int len = 4096;
......
...@@ -755,7 +755,7 @@ void cfs_trace_flush_pages(void) ...@@ -755,7 +755,7 @@ void cfs_trace_flush_pages(void)
} }
int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob, int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
const char *usr_buffer, int usr_buffer_nob) const char __user *usr_buffer, int usr_buffer_nob)
{ {
int nob; int nob;
...@@ -763,7 +763,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob, ...@@ -763,7 +763,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
return -EOVERFLOW; return -EOVERFLOW;
if (copy_from_user((void *)knl_buffer, if (copy_from_user((void *)knl_buffer,
(void *)usr_buffer, usr_buffer_nob)) usr_buffer, usr_buffer_nob))
return -EFAULT; return -EFAULT;
nob = strnlen(knl_buffer, usr_buffer_nob); nob = strnlen(knl_buffer, usr_buffer_nob);
...@@ -782,7 +782,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob, ...@@ -782,7 +782,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
} }
EXPORT_SYMBOL(cfs_trace_copyin_string); EXPORT_SYMBOL(cfs_trace_copyin_string);
int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob, int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
const char *knl_buffer, char *append) const char *knl_buffer, char *append)
{ {
/* NB if 'append' != NULL, it's a single character to append to the /* NB if 'append' != NULL, it's a single character to append to the
...@@ -824,7 +824,7 @@ void cfs_trace_free_string_buffer(char *str, int nob) ...@@ -824,7 +824,7 @@ void cfs_trace_free_string_buffer(char *str, int nob)
kfree(str); kfree(str);
} }
int cfs_trace_dump_debug_buffer_usrstr(void *usr_str, int usr_str_nob) int cfs_trace_dump_debug_buffer_usrstr(void __user *usr_str, int usr_str_nob)
{ {
char *str; char *str;
int rc; int rc;
...@@ -886,7 +886,7 @@ int cfs_trace_daemon_command(char *str) ...@@ -886,7 +886,7 @@ int cfs_trace_daemon_command(char *str)
return rc; return rc;
} }
int cfs_trace_daemon_command_usrstr(void *usr_str, int usr_str_nob) int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob)
{ {
char *str; char *str;
int rc; int rc;
...@@ -939,7 +939,7 @@ int cfs_trace_set_debug_mb(int mb) ...@@ -939,7 +939,7 @@ int cfs_trace_set_debug_mb(int mb)
return 0; return 0;
} }
int cfs_trace_set_debug_mb_usrstr(void *usr_str, int usr_str_nob) int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob)
{ {
char str[32]; char str[32];
int rc; int rc;
......
...@@ -68,16 +68,16 @@ void cfs_tracefile_exit(void); ...@@ -68,16 +68,16 @@ void cfs_tracefile_exit(void);
int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob, int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
const char *usr_buffer, int usr_buffer_nob); const char __user *usr_buffer, int usr_buffer_nob);
int cfs_trace_copyout_string(char *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); const char *knl_str, char *append);
int cfs_trace_allocate_string_buffer(char **str, int nob); int cfs_trace_allocate_string_buffer(char **str, int nob);
void cfs_trace_free_string_buffer(char *str, int nob); void cfs_trace_free_string_buffer(char *str, int nob);
int cfs_trace_dump_debug_buffer_usrstr(void *usr_str, int usr_str_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(char *str);
int cfs_trace_daemon_command_usrstr(void *usr_str, int usr_str_nob); int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_set_debug_mb(int mb); int cfs_trace_set_debug_mb(int mb);
int cfs_trace_set_debug_mb_usrstr(void *usr_str, int usr_str_nob); int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_get_debug_mb(void); int cfs_trace_get_debug_mb(void);
extern void libcfs_debug_dumplog_internal(void *arg); extern void libcfs_debug_dumplog_internal(void *arg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment