Whamcloud - gitweb
LU-5396 libcfs: add sparse annotation __user wherever needed
[fs/lustre-release.git] / libcfs / libcfs / linux / linux-proc.c
index 113dc18..bb9dc04 100644 (file)
@@ -76,11 +76,10 @@ extern char lnet_upcall[1024];
  */
 extern char lnet_debug_log_upcall[1024];
 
-int
-proc_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);
 
@@ -95,10 +94,10 @@ proc_call_handler(void *data, int write,
         }
         return 0;
 }
-EXPORT_SYMBOL(proc_call_handler);
+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;
@@ -138,13 +137,19 @@ static int __proc_dobitmasks(void *data, int write,
         return rc;
 }
 
-DECLARE_PROC_HANDLER(proc_dobitmasks)
+static int
+proc_dobitmasks(struct ctl_table *table, int write,
+               void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+       return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+                                   __proc_dobitmasks);
+}
 
 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;
@@ -152,10 +157,16 @@ static int __proc_dump_kernel(void *data, int write,
         return cfs_trace_dump_debug_buffer_usrstr(buffer, nob);
 }
 
-DECLARE_PROC_HANDLER(proc_dump_kernel)
+static int
+proc_dump_kernel(struct ctl_table *table, int write, void __user *buffer,
+                size_t *lenp, loff_t *ppos)
+{
+       return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+                                   __proc_dump_kernel);
+}
 
 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);
@@ -170,10 +181,16 @@ static int __proc_daemon_file(void *data, int write,
         return cfs_trace_daemon_command_usrstr(buffer, nob);
 }
 
-DECLARE_PROC_HANDLER(proc_daemon_file)
+static int
+proc_daemon_file(struct ctl_table *table, int write, void __user *buffer,
+                size_t *lenp, loff_t *ppos)
+{
+       return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+                                    __proc_daemon_file);
+}
 
 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];
@@ -190,9 +207,17 @@ static int __proc_debug_mb(void *data, int write,
         return cfs_trace_set_debug_mb_usrstr(buffer, nob);
 }
 
-DECLARE_PROC_HANDLER(proc_debug_mb)
+static int
+proc_debug_mb(struct ctl_table *table, int write, void __user *buffer,
+             size_t *lenp, loff_t *ppos)
+{
+       return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+                                   __proc_debug_mb);
+}
 
-int LL_PROC_PROTO(proc_console_max_delay_cs)
+static int
+proc_console_max_delay_cs(struct ctl_table *table, int write,
+                         void __user *buffer, size_t *lenp, loff_t *ppos)
 {
        int rc, max_delay_cs;
        struct ctl_table dummy = *table;
@@ -223,7 +248,9 @@ int LL_PROC_PROTO(proc_console_max_delay_cs)
         return rc;
 }
 
-int LL_PROC_PROTO(proc_console_min_delay_cs)
+static int
+proc_console_min_delay_cs(struct ctl_table *table, int write,
+                         void __user *buffer, size_t *lenp, loff_t *ppos)
 {
        int rc, min_delay_cs;
        struct ctl_table dummy = *table;
@@ -254,7 +281,9 @@ int LL_PROC_PROTO(proc_console_min_delay_cs)
        return rc;
 }
 
-int LL_PROC_PROTO(proc_console_backoff)
+static int
+proc_console_backoff(struct ctl_table *table, int write, void __user *buffer,
+                    size_t *lenp, loff_t *ppos)
 {
        int rc, backoff;
        struct ctl_table dummy = *table;
@@ -281,14 +310,18 @@ int LL_PROC_PROTO(proc_console_backoff)
        return rc;
 }
 
-int LL_PROC_PROTO(libcfs_force_lbug)
+static int
+libcfs_force_lbug(struct ctl_table *table, int write, void __user *buffer,
+                 size_t *lenp, loff_t *ppos)
 {
         if (write)
                 LBUG();
         return 0;
 }
 
-int LL_PROC_PROTO(proc_fail_loc)
+static int
+proc_fail_loc(struct ctl_table *table, int write, void __user *buffer,
+             size_t *lenp, loff_t *ppos)
 {
        int rc;
        long old_fail_loc = cfs_fail_loc;
@@ -300,7 +333,7 @@ int LL_PROC_PROTO(proc_fail_loc)
 }
 
 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;
@@ -339,7 +372,14 @@ static int __proc_cpt_table(void *data, int write,
                LIBCFS_FREE(buf, len);
        return rc;
 }
-DECLARE_PROC_HANDLER(proc_cpt_table)
+
+static int
+proc_cpt_table(struct ctl_table *table, int write, void __user *buffer,
+              size_t *lenp, loff_t *ppos)
+{
+       return lprocfs_call_handler(table->data, write, ppos, buffer, lenp,
+                                    __proc_cpt_table);
+}
 
 static struct ctl_table lnet_table[] = {
        /*