Whamcloud - gitweb
LU-5396 libcfs: add sparse annotation __user wherever needed 17/11817/4
authorFrank Zago <fzago@cray.com>
Wed, 23 Jul 2014 21:03:30 +0000 (16:03 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 6 Oct 2014 00:53:54 +0000 (00:53 +0000)
This fixes sparse warnings such as:

  .../api-ni.c:1639:33: warning: incorrect type in argument 3
                             (different address spaces)
  .../api-ni.c:1639:33:    expected struct lnet_process_id_t
                             [noderef] [usertype] <asn:1>*ids
  .../api-ni.c:1639:33:    got struct lnet_process_id_t
                             [usertype] *<noident>

There is no code change.

Change-Id: I07a40b3e2f5bf179923c57d9eda86b4921cd7699
Signed-off-by: frank zago <fzago@cray.com>
Reviewed-on: http://review.whamcloud.com/11817
Tested-by: Jenkins
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
libcfs/include/libcfs/libcfs.h
libcfs/include/libcfs/libcfs_debug.h
libcfs/include/libcfs/libcfs_ioctl.h
libcfs/include/libcfs/linux/libcfs.h
libcfs/libcfs/linux/linux-module.c
libcfs/libcfs/linux/linux-proc.c
libcfs/libcfs/module.c
libcfs/libcfs/tracefile.c
libcfs/libcfs/tracefile.h

index 76117da..3843ac7 100644 (file)
@@ -188,11 +188,11 @@ struct cfs_psdev_file {
 };
 
 struct cfs_psdev_ops {
-        int (*p_open)(unsigned long, void *);
-        int (*p_close)(unsigned long, void *);
-        int (*p_read)(struct cfs_psdev_file *, char *, unsigned long);
-        int (*p_write)(struct cfs_psdev_file *, char *, unsigned long);
-        int (*p_ioctl)(struct cfs_psdev_file *, unsigned long, void *);
+       int (*p_open)(unsigned long, void *);
+       int (*p_close)(unsigned long, void *);
+       int (*p_read)(struct cfs_psdev_file *, char *, unsigned long);
+       int (*p_write)(struct cfs_psdev_file *, char *, unsigned long);
+       int (*p_ioctl)(struct cfs_psdev_file *, unsigned long, void __user *);
 };
 
 /*
index 745236e..bf83c89 100644 (file)
@@ -376,8 +376,9 @@ extern int libcfs_debug_vmsg2(struct libcfs_debug_msg_data *msgdata,
 
 /* other external symbols that tracefile provides: */
 extern int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
-                                  const char *usr_buffer, int usr_buffer_nob);
-extern int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob,
+                                  const char __user *usr_buffer,
+                                  int usr_buffer_nob);
+extern int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
                                    const char *knl_buffer, char *append);
 
 #define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log"
index 3fb0539..b185a96 100644 (file)
@@ -66,9 +66,9 @@ struct libcfs_ioctl_data {
        char *ioc_inlbuf2;
 
        __u32 ioc_plen1; /* buffers in userspace */
-       char *ioc_pbuf1;
+       char __user *ioc_pbuf1;
        __u32 ioc_plen2; /* buffers in userspace */
-       char *ioc_pbuf2;
+       char __user *ioc_pbuf2;
 
        char ioc_bulk[0];
 };
@@ -255,7 +255,7 @@ extern int libcfs_ioctl_getdata(struct libcfs_ioctl_hdr *buf, __u32 buf_len,
                                const void __user *arg);
 extern int libcfs_ioctl_getdata_len(const struct libcfs_ioctl_hdr __user *arg,
                                    __u32 *buf_len);
-extern int libcfs_ioctl_popdata(void *arg, void *buf, int size);
+extern int libcfs_ioctl_popdata(void __user *arg, void *buf, int size);
 #endif
 
 extern int libcfs_ioctl_data_adjust(struct libcfs_ioctl_data *data);
index 7f3ba3e..b5ce289 100644 (file)
@@ -112,9 +112,10 @@ do {                                                                    \
 #define CFS_CURPROC_COMM_MAX (sizeof ((struct task_struct *)0)->comm)
 
 /* helper for sysctl handlers */
-int lprocfs_call_handler(void *data, int write, loff_t *ppos, void *buffer,
-                        size_t *lenp, int (*handler)(void *data, int write,
-                        loff_t pos, void *buffer, int len));
+int lprocfs_call_handler(void *data, int write, loff_t *ppos,
+                        void __user *buffer, size_t *lenp,
+                        int (*handler)(void *data, int write,
+                        loff_t pos, void __user *buffer, int len));
 
 #include <linux/capability.h>
 
index 6d841b4..6307129 100644 (file)
@@ -89,9 +89,9 @@ int libcfs_ioctl_getdata(struct libcfs_ioctl_hdr *buf, __u32 buf_len,
        RETURN(0);
 }
 
-int libcfs_ioctl_popdata(void *arg, void *data, int size)
+int libcfs_ioctl_popdata(void __user *arg, void *data, int size)
 {
-       if (copy_to_user((char *)arg, data, size))
+       if (copy_to_user(arg, data, size))
                return -EFAULT;
        return 0;
 }
@@ -164,7 +164,7 @@ static long libcfs_ioctl(struct file *file,
        pfile.off = 0;
        pfile.private_data = file->private_data;
        if (libcfs_psdev_ops.p_ioctl != NULL)
-               rc = libcfs_psdev_ops.p_ioctl(&pfile, cmd, (void *)arg);
+               rc = libcfs_psdev_ops.p_ioctl(&pfile, cmd, (void __user *)arg);
        else
                rc = -EPERM;
        return (rc);
index d5a979b..bb9dc04 100644 (file)
@@ -76,9 +76,10 @@ extern char lnet_upcall[1024];
  */
 extern char lnet_debug_log_upcall[1024];
 
-int lprocfs_call_handler(void *data, int write, loff_t *ppos, void *buffer,
-                        size_t *lenp, int (*handler)(void *data, int write,
-                        loff_t pos, void *buffer, int len))
+int lprocfs_call_handler(void *data, int write, loff_t *ppos,
+                        void __user *buffer, size_t *lenp,
+                        int (*handler)(void *data, int write, loff_t pos,
+                                       void __user *buffer, int len))
 {
         int rc = handler(data, write, *ppos, buffer, *lenp);
 
@@ -96,7 +97,7 @@ int lprocfs_call_handler(void *data, int write, loff_t *ppos, void *buffer,
 EXPORT_SYMBOL(lprocfs_call_handler);
 
 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;
         char         *tmpstr;
@@ -148,7 +149,7 @@ static int min_watchdog_ratelimit = 0;          /* disable ratelimiting */
 static int max_watchdog_ratelimit = (24*60*60); /* limit to once per day */
 
 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)
                 return 0;
@@ -165,7 +166,7 @@ proc_dump_kernel(struct ctl_table *table, int write, void __user *buffer,
 }
 
 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) {
                 int len = strlen(cfs_tracefile);
@@ -189,7 +190,7 @@ proc_daemon_file(struct ctl_table *table, int write, void __user *buffer,
 }
 
 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) {
                 char tmpstr[32];
@@ -332,7 +333,7 @@ proc_fail_loc(struct ctl_table *table, int write, void __user *buffer,
 }
 
 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;
        int   len = 4096;
index 7621023..ee678ec 100644 (file)
@@ -223,7 +223,7 @@ int libcfs_deregister_ioctl(struct libcfs_ioctl_handler *hand)
 EXPORT_SYMBOL(libcfs_deregister_ioctl);
 
 static int libcfs_ioctl_handle(struct cfs_psdev_file *pfile, unsigned long cmd,
-                              void *arg, struct libcfs_ioctl_hdr *hdr)
+                              void __user *arg, struct libcfs_ioctl_hdr *hdr)
 {
        struct libcfs_ioctl_data *data = NULL;
        int err;
@@ -310,7 +310,7 @@ static int libcfs_ioctl_handle(struct cfs_psdev_file *pfile, unsigned long cmd,
 }
 
 static int libcfs_ioctl(struct cfs_psdev_file *pfile,
-                       unsigned long cmd, void *arg)
+                       unsigned long cmd, void __user *arg)
 {
        struct libcfs_ioctl_hdr *hdr;
        int err = 0;
index 0c2e06a..d0b031e 100644 (file)
@@ -741,15 +741,14 @@ void cfs_trace_flush_pages(void)
 }
 
 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;
 
         if (usr_buffer_nob > knl_buffer_nob)
                 return -EOVERFLOW;
 
-       if (copy_from_user((void *)knl_buffer,
-                           (void *)usr_buffer, usr_buffer_nob))
+       if (copy_from_user(knl_buffer, usr_buffer, usr_buffer_nob))
                 return -EFAULT;
 
         nob = strnlen(knl_buffer, usr_buffer_nob);
@@ -768,7 +767,7 @@ int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
 }
 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)
 {
         /* NB if 'append' != NULL, it's a single character to append to the
@@ -810,7 +809,7 @@ void cfs_trace_free_string_buffer(char *str, int nob)
        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;
         int           rc;
@@ -872,7 +871,7 @@ int cfs_trace_daemon_command(char *str)
         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;
         int   rc;
@@ -925,7 +924,7 @@ int cfs_trace_set_debug_mb(int mb)
        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];
         int      rc;
index ca7f904..6eed697 100644 (file)
@@ -71,16 +71,16 @@ void cfs_tracefile_exit(void);
 
 
 int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
-                            const char *usr_buffer, int usr_buffer_nob);
-int cfs_trace_copyout_string(char *usr_buffer, int usr_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);
 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_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_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);
 
 extern void libcfs_debug_dumplog_internal(void *arg);