

sys_ustat was changed to take an unsigned int for the dev_t.  This will break
PPC64, on which dev_t is "long" (64-bits).

Fix that up.


 arch/ppc64/kernel/misc.S     |    4 ++--
 arch/ppc64/kernel/syscalls.c |    5 +++++
 fs/super.c                   |    3 ++-
 include/linux/fs.h           |    2 ++
 4 files changed, 11 insertions(+), 3 deletions(-)

diff -puN fs/super.c~ppc64-64-bit-ustat-fix fs/super.c
--- 25/fs/super.c~ppc64-64-bit-ustat-fix	2003-08-04 00:00:08.000000000 -0700
+++ 25-akpm/fs/super.c	2003-08-04 00:00:31.000000000 -0700
@@ -31,6 +31,7 @@
 #include <linux/mount.h>
 #include <linux/security.h>
 #include <linux/vfs.h>
+#include <linux/fs.h>
 #include <linux/writeback.h>		/* for the emergency remount stuff */
 #include <asm/uaccess.h>
 
@@ -405,7 +406,7 @@ rescan:
 	return NULL;
 }
 
-static long do_ustat(dev_t dev, struct ustat __user *ubuf)
+long do_ustat(dev_t dev, struct ustat __user *ubuf)
 {
         struct super_block *s;
         struct ustat tmp;
diff -puN include/linux/fs.h~ppc64-64-bit-ustat-fix include/linux/fs.h
--- 25/include/linux/fs.h~ppc64-64-bit-ustat-fix	2003-08-04 00:00:08.000000000 -0700
+++ 25-akpm/include/linux/fs.h	2003-08-04 00:00:48.000000000 -0700
@@ -1380,6 +1380,8 @@ extern int inode_setattr(struct inode *,
 
 extern void inode_update_time(struct inode *inode, int ctime_too);
 
+extern long do_ustat(dev_t dev, struct ustat __user *ubuf);
+
 static inline ino_t parent_ino(struct dentry *dentry)
 {
 	ino_t res;
diff -puN arch/ppc64/kernel/misc.S~ppc64-64-bit-ustat-fix arch/ppc64/kernel/misc.S
--- 25/arch/ppc64/kernel/misc.S~ppc64-64-bit-ustat-fix	2003-08-04 00:00:08.000000000 -0700
+++ 25-akpm/arch/ppc64/kernel/misc.S	2003-08-04 00:01:02.000000000 -0700
@@ -660,7 +660,7 @@ _GLOBAL(sys_call_table32)
 	.llong .sys32_olduname
 	.llong .sys32_umask		/* 60 */
 	.llong .sys_chroot
-	.llong .sys_ustat
+	.llong .ppc64_ustat
 	.llong .sys_dup2
 	.llong .sys_getppid
 	.llong .sys_getpgrp	        /* 65 */
@@ -903,7 +903,7 @@ _GLOBAL(sys_call_table)
 	.llong .sys_ni_syscall		/* old uname syscall */
 	.llong .sys_umask		/* 60 */
 	.llong .sys_chroot
-	.llong .sys_ustat
+	.llong .ppc64_ustat
 	.llong .sys_dup2
 	.llong .sys_getppid
 	.llong .sys_getpgrp		/* 65 */
diff -puN arch/ppc64/kernel/syscalls.c~ppc64-64-bit-ustat-fix arch/ppc64/kernel/syscalls.c
--- 25/arch/ppc64/kernel/syscalls.c~ppc64-64-bit-ustat-fix	2003-08-04 00:00:08.000000000 -0700
+++ 25-akpm/arch/ppc64/kernel/syscalls.c	2003-08-04 00:01:57.000000000 -0700
@@ -237,3 +237,8 @@ ppc64_mknod(const char __user *filename,
 {
 	return do_mknod(filename, mode, dev);
 }
+
+asmlinkage long ppc64_ustat(dev_t dev, struct ustat __user *ubuf)
+{
+	return do_ustat(dev, ubuf);
+}

_
