]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/kernel/sys_oabi-compat.c
Merge branches 'pxa-ian' and 'pxa-xm270' into pxa
[linux-2.6-omap-h63xx.git] / arch / arm / kernel / sys_oabi-compat.c
index 8e2f9bc3368b0600f99c6eef4ae6c3cc70db1fe3..96ab5f52949c99d145aea4be30f077e5ea34ef9f 100644 (file)
@@ -25,6 +25,7 @@
  * sys_stat64:
  * sys_lstat64:
  * sys_fstat64:
+ * sys_fstatat64:
  *
  *   struct stat64 has different sizes and some members are shifted
  *   Compatibility wrappers are needed for them and provided below.
@@ -80,7 +81,7 @@
 #include <linux/sem.h>
 #include <linux/socket.h>
 #include <linux/net.h>
-#include <asm/ipc.h>
+#include <linux/ipc.h>
 #include <asm/uaccess.h>
 
 struct oldabi_stat64 {
@@ -169,6 +170,29 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd,
        return error;
 }
 
+asmlinkage long sys_oabi_fstatat64(int dfd,
+                                  char __user *filename,
+                                  struct oldabi_stat64  __user *statbuf,
+                                  int flag)
+{
+       struct kstat stat;
+       int error = -EINVAL;
+
+       if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
+               goto out;
+
+       if (flag & AT_SYMLINK_NOFOLLOW)
+               error = vfs_lstat_fd(dfd, filename, &stat);
+       else
+               error = vfs_stat_fd(dfd, filename, &stat);
+
+       if (!error)
+       error = cp_oldabi_stat64(&stat, statbuf);
+
+out:
+       return error;
+}
+
 struct oabi_flock64 {
        short   l_type;
        short   l_whence;