[PATCH v2] Make do_sysinfo() static

2013-04-07 Thread Stephen Rothwell
The only use outside of kernel/timer.c was in kernel/compat.c, so move
compat_sys_sysinfo() next to sys_sysinfo() in kernel/timer.c.

Signed-off-by: Stephen Rothwell 
---
 include/linux/kernel.h |  2 --
 kernel/compat.c| 65 --
 kernel/timer.c | 70 +-
 3 files changed, 69 insertions(+), 68 deletions(-)

v2:  I am so embarrassed that I forgot to include linux/compat.h in
kernel/timer.c :-)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 79fdd80..a8b579c 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -734,6 +734,4 @@ static inline void ftrace_dump(enum ftrace_dump_mode 
oops_dump_mode) { }
 # define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
 #endif
 
-extern int do_sysinfo(struct sysinfo *info);
-
 #endif
diff --git a/kernel/compat.c b/kernel/compat.c
index 19971d8..1e8f145 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -1138,71 +1138,6 @@ asmlinkage long compat_sys_migrate_pages(compat_pid_t 
pid,
 }
 #endif
 
-struct compat_sysinfo {
-   s32 uptime;
-   u32 loads[3];
-   u32 totalram;
-   u32 freeram;
-   u32 sharedram;
-   u32 bufferram;
-   u32 totalswap;
-   u32 freeswap;
-   u16 procs;
-   u16 pad;
-   u32 totalhigh;
-   u32 freehigh;
-   u32 mem_unit;
-   char _f[20-2*sizeof(u32)-sizeof(int)];
-};
-
-asmlinkage long
-compat_sys_sysinfo(struct compat_sysinfo __user *info)
-{
-   struct sysinfo s;
-
-   do_sysinfo();
-
-   /* Check to see if any memory value is too large for 32-bit and scale
-*  down if needed
-*/
-   if ((s.totalram >> 32) || (s.totalswap >> 32)) {
-   int bitcount = 0;
-
-   while (s.mem_unit < PAGE_SIZE) {
-   s.mem_unit <<= 1;
-   bitcount++;
-   }
-
-   s.totalram >>= bitcount;
-   s.freeram >>= bitcount;
-   s.sharedram >>= bitcount;
-   s.bufferram >>= bitcount;
-   s.totalswap >>= bitcount;
-   s.freeswap >>= bitcount;
-   s.totalhigh >>= bitcount;
-   s.freehigh >>= bitcount;
-   }
-
-   if (!access_ok(VERIFY_WRITE, info, sizeof(struct compat_sysinfo)) ||
-   __put_user (s.uptime, >uptime) ||
-   __put_user (s.loads[0], >loads[0]) ||
-   __put_user (s.loads[1], >loads[1]) ||
-   __put_user (s.loads[2], >loads[2]) ||
-   __put_user (s.totalram, >totalram) ||
-   __put_user (s.freeram, >freeram) ||
-   __put_user (s.sharedram, >sharedram) ||
-   __put_user (s.bufferram, >bufferram) ||
-   __put_user (s.totalswap, >totalswap) ||
-   __put_user (s.freeswap, >freeswap) ||
-   __put_user (s.procs, >procs) ||
-   __put_user (s.totalhigh, >totalhigh) ||
-   __put_user (s.freehigh, >freehigh) ||
-   __put_user (s.mem_unit, >mem_unit))
-   return -EFAULT;
-
-   return 0;
-}
-
 COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
   compat_pid_t, pid,
   struct compat_timespec __user *, interval)
diff --git a/kernel/timer.c b/kernel/timer.c
index dbf7a78..06b3245 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -41,6 +41,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -1567,7 +1568,7 @@ SYSCALL_DEFINE0(gettid)
  * do_sysinfo - fill in sysinfo struct
  * @info: pointer to buffer to fill
  */
-int do_sysinfo(struct sysinfo *info)
+static int do_sysinfo(struct sysinfo *info)
 {
unsigned long mem_total, sav_total;
unsigned int mem_unit, bitcount;
@@ -1642,6 +1643,73 @@ SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
return 0;
 }
 
+#ifdef CONFIG_COMPAT
+struct compat_sysinfo {
+   s32 uptime;
+   u32 loads[3];
+   u32 totalram;
+   u32 freeram;
+   u32 sharedram;
+   u32 bufferram;
+   u32 totalswap;
+   u32 freeswap;
+   u16 procs;
+   u16 pad;
+   u32 totalhigh;
+   u32 freehigh;
+   u32 mem_unit;
+   char _f[20-2*sizeof(u32)-sizeof(int)];
+};
+
+asmlinkage long
+compat_sys_sysinfo(struct compat_sysinfo __user *info)
+{
+   struct sysinfo s;
+
+   do_sysinfo();
+
+   /* Check to see if any memory value is too large for 32-bit and scale
+*  down if needed
+*/
+   if ((s.totalram >> 32) || (s.totalswap >> 32)) {
+   int bitcount = 0;
+
+   while (s.mem_unit < PAGE_SIZE) {
+   s.mem_unit <<= 1;
+   bitcount++;
+   }
+
+   s.totalram >>= bitcount;
+   s.freeram >>= bitcount;
+   s.sharedram >>= bitcount;
+   s.bufferram >>= bitcount;
+   s.totalswap >>= bitcount;
+   s.freeswap >>= bitcount;
+   s.totalhigh >>= bitcount;

[PATCH v2] Make do_sysinfo() static

2013-04-07 Thread Stephen Rothwell
The only use outside of kernel/timer.c was in kernel/compat.c, so move
compat_sys_sysinfo() next to sys_sysinfo() in kernel/timer.c.

Signed-off-by: Stephen Rothwell s...@canb.auug.org.au
---
 include/linux/kernel.h |  2 --
 kernel/compat.c| 65 --
 kernel/timer.c | 70 +-
 3 files changed, 69 insertions(+), 68 deletions(-)

v2:  I am so embarrassed that I forgot to include linux/compat.h in
kernel/timer.c :-)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 79fdd80..a8b579c 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -734,6 +734,4 @@ static inline void ftrace_dump(enum ftrace_dump_mode 
oops_dump_mode) { }
 # define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
 #endif
 
-extern int do_sysinfo(struct sysinfo *info);
-
 #endif
diff --git a/kernel/compat.c b/kernel/compat.c
index 19971d8..1e8f145 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -1138,71 +1138,6 @@ asmlinkage long compat_sys_migrate_pages(compat_pid_t 
pid,
 }
 #endif
 
-struct compat_sysinfo {
-   s32 uptime;
-   u32 loads[3];
-   u32 totalram;
-   u32 freeram;
-   u32 sharedram;
-   u32 bufferram;
-   u32 totalswap;
-   u32 freeswap;
-   u16 procs;
-   u16 pad;
-   u32 totalhigh;
-   u32 freehigh;
-   u32 mem_unit;
-   char _f[20-2*sizeof(u32)-sizeof(int)];
-};
-
-asmlinkage long
-compat_sys_sysinfo(struct compat_sysinfo __user *info)
-{
-   struct sysinfo s;
-
-   do_sysinfo(s);
-
-   /* Check to see if any memory value is too large for 32-bit and scale
-*  down if needed
-*/
-   if ((s.totalram  32) || (s.totalswap  32)) {
-   int bitcount = 0;
-
-   while (s.mem_unit  PAGE_SIZE) {
-   s.mem_unit = 1;
-   bitcount++;
-   }
-
-   s.totalram = bitcount;
-   s.freeram = bitcount;
-   s.sharedram = bitcount;
-   s.bufferram = bitcount;
-   s.totalswap = bitcount;
-   s.freeswap = bitcount;
-   s.totalhigh = bitcount;
-   s.freehigh = bitcount;
-   }
-
-   if (!access_ok(VERIFY_WRITE, info, sizeof(struct compat_sysinfo)) ||
-   __put_user (s.uptime, info-uptime) ||
-   __put_user (s.loads[0], info-loads[0]) ||
-   __put_user (s.loads[1], info-loads[1]) ||
-   __put_user (s.loads[2], info-loads[2]) ||
-   __put_user (s.totalram, info-totalram) ||
-   __put_user (s.freeram, info-freeram) ||
-   __put_user (s.sharedram, info-sharedram) ||
-   __put_user (s.bufferram, info-bufferram) ||
-   __put_user (s.totalswap, info-totalswap) ||
-   __put_user (s.freeswap, info-freeswap) ||
-   __put_user (s.procs, info-procs) ||
-   __put_user (s.totalhigh, info-totalhigh) ||
-   __put_user (s.freehigh, info-freehigh) ||
-   __put_user (s.mem_unit, info-mem_unit))
-   return -EFAULT;
-
-   return 0;
-}
-
 COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
   compat_pid_t, pid,
   struct compat_timespec __user *, interval)
diff --git a/kernel/timer.c b/kernel/timer.c
index dbf7a78..06b3245 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -41,6 +41,7 @@
 #include linux/sched.h
 #include linux/sched/sysctl.h
 #include linux/slab.h
+#include linux/compat.h
 
 #include asm/uaccess.h
 #include asm/unistd.h
@@ -1567,7 +1568,7 @@ SYSCALL_DEFINE0(gettid)
  * do_sysinfo - fill in sysinfo struct
  * @info: pointer to buffer to fill
  */
-int do_sysinfo(struct sysinfo *info)
+static int do_sysinfo(struct sysinfo *info)
 {
unsigned long mem_total, sav_total;
unsigned int mem_unit, bitcount;
@@ -1642,6 +1643,73 @@ SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
return 0;
 }
 
+#ifdef CONFIG_COMPAT
+struct compat_sysinfo {
+   s32 uptime;
+   u32 loads[3];
+   u32 totalram;
+   u32 freeram;
+   u32 sharedram;
+   u32 bufferram;
+   u32 totalswap;
+   u32 freeswap;
+   u16 procs;
+   u16 pad;
+   u32 totalhigh;
+   u32 freehigh;
+   u32 mem_unit;
+   char _f[20-2*sizeof(u32)-sizeof(int)];
+};
+
+asmlinkage long
+compat_sys_sysinfo(struct compat_sysinfo __user *info)
+{
+   struct sysinfo s;
+
+   do_sysinfo(s);
+
+   /* Check to see if any memory value is too large for 32-bit and scale
+*  down if needed
+*/
+   if ((s.totalram  32) || (s.totalswap  32)) {
+   int bitcount = 0;
+
+   while (s.mem_unit  PAGE_SIZE) {
+   s.mem_unit = 1;
+   bitcount++;
+   }
+
+   s.totalram = bitcount;
+   s.freeram = bitcount;
+   s.sharedram = bitcount;
+   s.bufferram = bitcount;