Permalink
Browse files

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…

…/git/viro/vfs

Pull vfs changes from Al Viro.
 "A lot of misc stuff.  The obvious groups:
   * Miklos' atomic_open series; kills the damn abuse of
     ->d_revalidate() by NFS, which was the major stumbling block for
     all work in that area.
   * ripping security_file_mmap() and dealing with deadlocks in the
     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in
     general.
   * ->encode_fh() switched to saner API; insane fake dentry in
     mm/cleancache.c gone.
   * assorted annotations in fs (endianness, __user)
   * parts of Artem's ->s_dirty work (jff2 and reiserfs parts)
   * ->update_time() work from Josef.
   * other bits and pieces all over the place.

  Normally it would've been in two or three pull requests, but
  signal.git stuff had eaten a lot of time during this cycle ;-/"

Fix up trivial conflicts in Documentation/filesystems/vfs.txt (the
'truncate_range' inode method was removed by the VM changes, the VFS
update adds an 'update_time()' method), and in fs/btrfs/ulist.[ch] (due
to sparse fix added twice, with other changes nearby).

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)
  nfs: don't open in ->d_revalidate
  vfs: retry last component if opening stale dentry
  vfs: nameidata_to_filp(): don't throw away file on error
  vfs: nameidata_to_filp(): inline __dentry_open()
  vfs: do_dentry_open(): don't put filp
  vfs: split __dentry_open()
  vfs: do_last() common post lookup
  vfs: do_last(): add audit_inode before open
  vfs: do_last(): only return EISDIR for O_CREAT
  vfs: do_last(): check LOOKUP_DIRECTORY
  vfs: do_last(): make ENOENT exit RCU safe
  vfs: make follow_link check RCU safe
  vfs: do_last(): use inode variable
  vfs: do_last(): inline walk_component()
  vfs: do_last(): make exit RCU safe
  vfs: split do_lookup()
  Btrfs: move over to use ->update_time
  fs: introduce inode operation ->update_time
  reiserfs: get rid of resierfs_sync_super
  reiserfs: mark the superblock as dirty a bit later
  ...
  • Loading branch information...
2 parents 4edebed + 0ef97dc commit 1193755ac6328ad240ba987e6ec41d5e8baf0680 @torvalds committed Jun 1, 2012
Showing with 1,495 additions and 1,618 deletions.
  1. +3 −0 Documentation/filesystems/Locking
  2. +4 −0 Documentation/filesystems/vfs.txt
  3. +0 −3 arch/alpha/include/asm/posix_types.h
  4. +0 −3 arch/arm/include/asm/posix_types.h
  5. +0 −3 arch/avr32/include/asm/posix_types.h
  6. +0 −3 arch/blackfin/include/asm/posix_types.h
  7. +0 −3 arch/cris/include/asm/posix_types.h
  8. +0 −3 arch/frv/include/asm/posix_types.h
  9. +0 −3 arch/h8300/include/asm/posix_types.h
  10. +0 −3 arch/ia64/include/asm/posix_types.h
  11. +2 −8 arch/ia64/kernel/perfmon.c
  12. +3 −16 arch/ia64/kernel/sys_ia64.c
  13. +0 −3 arch/m32r/include/asm/posix_types.h
  14. +0 −3 arch/m68k/include/asm/posix_types.h
  15. +0 −5 arch/mips/include/asm/posix_types.h
  16. +3 −3 arch/mips/include/asm/stat.h
  17. +0 −3 arch/mn10300/include/asm/posix_types.h
  18. +0 −3 arch/parisc/include/asm/posix_types.h
  19. +2 −2 arch/parisc/include/asm/stat.h
  20. +0 −3 arch/powerpc/include/asm/posix_types.h
  21. +2 −2 arch/powerpc/include/asm/stat.h
  22. +0 −3 arch/s390/include/asm/posix_types.h
  23. +0 −2 arch/sh/include/asm/posix_types_32.h
  24. +0 −2 arch/sh/include/asm/posix_types_64.h
  25. +0 −5 arch/sparc/include/asm/posix_types.h
  26. +2 −9 arch/sparc/kernel/sys_sparc_64.c
  27. +0 −1 arch/tile/include/asm/compat.h
  28. +0 −3 arch/x86/include/asm/posix_types_32.h
  29. +1 −1 drivers/base/soc.c
  30. +1 −3 drivers/gpu/drm/i810/i810_dma.c
  31. +3 −21 fs/9p/vfs_inode_dotl.c
  32. +0 −8 fs/affs/affs.h
  33. +3 −3 fs/aio.c
  34. +5 −0 fs/attr.c
  35. +3 −5 fs/binfmt_elf.c
  36. +4 −4 fs/binfmt_flat.c
  37. +0 −1 fs/btrfs/ctree.h
  38. +4 −11 fs/btrfs/export.c
  39. +1 −1 fs/btrfs/file.c
  40. +4 −3 fs/btrfs/free-space-cache.c
  41. +14 −39 fs/btrfs/inode.c
  42. +1 −1 fs/buffer.c
  43. +21 −11 fs/ceph/export.c
  44. +14 −19 fs/compat.c
  45. +8 −12 fs/dcache.c
  46. +9 −39 fs/ecryptfs/inode.c
  47. +0 −4 fs/exec.c
  48. +19 −14 fs/exportfs/expfs.c
  49. +4 −5 fs/fat/inode.c
  50. +17 −25 fs/fcntl.c
  51. +8 −9 fs/file_table.c
  52. +3 −1 fs/fuse/file.c
  53. +5 −12 fs/fuse/inode.c
  54. +5 −12 fs/gfs2/export.c
  55. +7 −7 fs/hpfs/alloc.c
  56. +24 −19 fs/hpfs/anode.c
  57. +1 −1 fs/hpfs/dir.c
  58. +5 −5 fs/hpfs/dnode.c
  59. +30 −30 fs/hpfs/ea.c
  60. +140 −149 fs/hpfs/hpfs.h
  61. +8 −8 fs/hpfs/hpfs_fn.h
  62. +1 −1 fs/hpfs/inode.c
  63. +10 −10 fs/hpfs/map.c
  64. +1 −1 fs/hpfs/namei.c
  65. +2 −2 fs/hpfs/super.c
  66. +106 −18 fs/inode.c
  67. +2 −1 fs/internal.h
  68. +4 −9 fs/isofs/export.c
  69. +4 −0 fs/jffs2/jffs2_fs_sb.h
  70. +2 −5 fs/jffs2/os-linux.h
  71. +0 −21 fs/jffs2/super.c
  72. +52 −3 fs/jffs2/wbuf.c
  73. +3 −2 fs/locks.c
  74. +127 −50 fs/namei.c
  75. +72 −70 fs/namespace.c
  76. +4 −2 fs/ncpfs/file.c
  77. +5 −5 fs/ncpfs/ncp_fs_sb.h
  78. +5 −51 fs/nfs/dir.c
  79. +73 −4 fs/nfs/file.c
  80. +10 −12 fs/nilfs2/namei.c
  81. +6 −6 fs/notify/fsnotify.c
  82. +3 −1 fs/ntfs/file.c
  83. +22 −20 fs/ocfs2/blockcheck.c
  84. +1 −1 fs/ocfs2/dlm/dlmast.c
  85. +3 −3 fs/ocfs2/dlm/dlmcommon.h
  86. +1 −1 fs/ocfs2/dlm/dlmdomain.c
  87. +7 −12 fs/ocfs2/export.c
  88. +6 −7 fs/ocfs2/inode.c
  89. +14 −17 fs/ocfs2/ioctl.c
  90. +2 −4 fs/ocfs2/move_extents.c
  91. +3 −2 fs/ocfs2/namei.c
  92. +21 −94 fs/ocfs2/symlink.c
  93. +1 −1 fs/ocfs2/symlink.h
  94. +57 −19 fs/open.c
  95. +5 −2 fs/pipe.c
  96. +2 −2 fs/pnode.c
  97. +2 −2 fs/proc_namespace.c
  98. +14 −19 fs/readdir.c
  99. +12 −18 fs/reiserfs/inode.c
  100. +7 −8 fs/reiserfs/journal.c
  101. +9 −3 fs/reiserfs/reiserfs.h
  102. +0 −1 fs/reiserfs/resize.c
  103. +55 −19 fs/reiserfs/super.c
  104. +4 −3 fs/signalfd.c
  105. +4 −2 fs/splice.c
  106. +3 −2 fs/statfs.c
  107. +3 −2 fs/sync.c
  108. +1 −10 fs/ubifs/dir.c
  109. +5 −9 fs/udf/namei.c
  110. +3 −2 fs/utimes.c
  111. +12 −8 fs/xattr.c
  112. +5 −5 fs/xfs/kmem.c
  113. +11 −10 fs/xfs/kmem.h
  114. +9 −14 fs/xfs/xfs_export.c
  115. +5 −2 fs/xfs/xfs_file.c
  116. +1 −1 fs/xfs/xfs_log.c
  117. +1 −1 fs/xfs/xfs_log_priv.h
  118. +1 −1 fs/xfs/xfs_trans.c
  119. +1 −1 fs/xfs/xfs_trans.h
  120. +0 −4 include/asm-generic/posix_types.h
  121. +1 −0 include/linux/errno.h
  122. +2 −2 include/linux/exportfs.h
  123. +9 −1 include/linux/fs.h
  124. +1 −1 include/linux/fsnotify_backend.h
  125. +26 −153 include/linux/lglock.h
  126. +1 −1 include/linux/mm.h
  127. +22 −18 include/linux/security.h
  128. +1 −1 include/linux/types.h
  129. +6 −1 ipc/shm.c
  130. +1 −1 kernel/Makefile
  131. +89 −0 kernel/lglock.c
  132. +2 −4 mm/cleancache.c
  133. +3 −66 mm/filemap.c
  134. +3 −1 mm/filemap_xip.c
  135. +4 −0 mm/internal.h
  136. +6 −48 mm/mmap.c
  137. +5 −21 mm/mremap.c
  138. +3 −32 mm/nommu.c
  139. +2 −4 mm/shmem.c
  140. +30 −0 mm/util.c
  141. +0 −2 net/sched/sch_atm.c
  142. +4 −11 security/apparmor/lsm.c
  143. +2 −1 security/capability.c
  144. +8 −9 security/commoncap.c
  145. +46 −5 security/security.c
  146. +8 −7 security/selinux/hooks.c
  147. +7 −29 security/selinux/selinuxfs.c
  148. +5 −10 security/smack/smack_lsm.c
@@ -61,6 +61,7 @@ ata *);
ssize_t (*listxattr) (struct dentry *, char *, size_t);
int (*removexattr) (struct dentry *, const char *);
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
+ void (*update_time)(struct inode *, struct timespec *, int);
locking rules:
all may block
@@ -87,6 +88,8 @@ getxattr: no
listxattr: no
removexattr: yes
fiemap: no
+update_time: no
+
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
victim.
cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
@@ -363,6 +363,7 @@ struct inode_operations {
ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
ssize_t (*listxattr) (struct dentry *, char *, size_t);
int (*removexattr) (struct dentry *, const char *);
+ void (*update_time)(struct inode *, struct timespec *, int);
};
Again, all methods are called without any locks being held, unless
@@ -471,6 +472,9 @@ otherwise noted.
removexattr: called by the VFS to remove an extended attribute from
a file. This method is called by removexattr(2) system call.
+ update_time: called by the VFS to update a specific time or the i_version of
+ an inode. If this is not defined the VFS will update the inode itself
+ and call mark_inode_dirty_sync.
The Address Space Object
========================
@@ -10,9 +10,6 @@
typedef unsigned int __kernel_ino_t;
#define __kernel_ino_t __kernel_ino_t
-typedef unsigned int __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned long __kernel_sigset_t; /* at least 32 bits */
#include <asm-generic/posix_types.h>
@@ -22,9 +22,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -17,9 +17,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned int __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -15,9 +15,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -1,9 +1,6 @@
#ifndef _ASM_IA64_POSIX_TYPES_H
#define _ASM_IA64_POSIX_TYPES_H
-typedef unsigned int __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned long __kernel_sigset_t; /* at least 32 bits */
#include <asm-generic/posix_types.h>
View
@@ -604,12 +604,6 @@ pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f)
spin_unlock(&(x)->ctx_lock);
}
-static inline unsigned long
-pfm_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags, unsigned long exec)
-{
- return get_unmapped_area(file, addr, len, pgoff, flags);
-}
-
/* forward declaration */
static const struct dentry_operations pfmfs_dentry_operations;
@@ -2333,8 +2327,8 @@ pfm_smpl_buffer_alloc(struct task_struct *task, struct file *filp, pfm_context_t
down_write(&task->mm->mmap_sem);
/* find some free area in address space, must have mmap sem held */
- vma->vm_start = pfm_get_unmapped_area(NULL, 0, size, 0, MAP_PRIVATE|MAP_ANONYMOUS, 0);
- if (vma->vm_start == 0UL) {
+ vma->vm_start = get_unmapped_area(NULL, 0, size, 0, MAP_PRIVATE|MAP_ANONYMOUS);
+ if (IS_ERR_VALUE(vma->vm_start)) {
DPRINT(("Cannot find unmapped area for size %ld\n", size));
up_write(&task->mm->mmap_sem);
goto error;
@@ -171,22 +171,9 @@ asmlinkage unsigned long
ia64_mremap (unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags,
unsigned long new_addr)
{
- extern unsigned long do_mremap (unsigned long addr,
- unsigned long old_len,
- unsigned long new_len,
- unsigned long flags,
- unsigned long new_addr);
-
- down_write(&current->mm->mmap_sem);
- {
- addr = do_mremap(addr, old_len, new_len, flags, new_addr);
- }
- up_write(&current->mm->mmap_sem);
-
- if (IS_ERR((void *) addr))
- return addr;
-
- force_successful_syscall_return();
+ addr = sys_mremap(addr, old_len, new_len, flags, new_addr);
+ if (!IS_ERR((void *) addr))
+ force_successful_syscall_return();
return addr;
}
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -17,11 +17,6 @@
* assume GCC is being used.
*/
-#if (_MIPS_SZLONG == 64)
-typedef unsigned int __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-#endif
-
typedef long __kernel_daddr_t;
#define __kernel_daddr_t __kernel_daddr_t
@@ -20,7 +20,7 @@ struct stat {
long st_pad1[3]; /* Reserved for network id */
ino_t st_ino;
mode_t st_mode;
- nlink_t st_nlink;
+ __u32 st_nlink;
uid_t st_uid;
gid_t st_gid;
unsigned st_rdev;
@@ -55,7 +55,7 @@ struct stat64 {
unsigned long long st_ino;
mode_t st_mode;
- nlink_t st_nlink;
+ __u32 st_nlink;
uid_t st_uid;
gid_t st_gid;
@@ -96,7 +96,7 @@ struct stat {
unsigned long st_ino;
mode_t st_mode;
- nlink_t st_nlink;
+ __u32 st_nlink;
uid_t st_uid;
gid_t st_gid;
@@ -20,9 +20,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
@@ -7,7 +7,7 @@ struct stat {
unsigned int st_dev; /* dev_t is 32 bits on parisc */
ino_t st_ino; /* 32 bits */
mode_t st_mode; /* 16 bits */
- nlink_t st_nlink; /* 16 bits */
+ unsigned short st_nlink; /* 16 bits */
unsigned short st_reserved1; /* old st_uid */
unsigned short st_reserved2; /* old st_gid */
unsigned int st_rdev;
@@ -42,7 +42,7 @@ struct hpux_stat64 {
unsigned int st_dev; /* dev_t is 32 bits on parisc */
ino_t st_ino; /* 32 bits */
mode_t st_mode; /* 16 bits */
- nlink_t st_nlink; /* 16 bits */
+ unsigned short st_nlink; /* 16 bits */
unsigned short st_reserved1; /* old st_uid */
unsigned short st_reserved2; /* old st_gid */
unsigned int st_rdev;
@@ -16,9 +16,6 @@ typedef int __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
#define __kernel_size_t __kernel_size_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
#endif
@@ -30,11 +30,11 @@ struct stat {
unsigned long st_dev;
ino_t st_ino;
#ifdef __powerpc64__
- nlink_t st_nlink;
+ unsigned short st_nlink;
mode_t st_mode;
#else
mode_t st_mode;
- nlink_t st_nlink;
+ unsigned short st_nlink;
#endif
uid_t st_uid;
gid_t st_gid;
@@ -24,7 +24,6 @@ typedef unsigned short __kernel_old_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
-typedef unsigned short __kernel_nlink_t;
typedef unsigned short __kernel_ipc_pid_t;
typedef unsigned short __kernel_uid_t;
typedef unsigned short __kernel_gid_t;
@@ -35,7 +34,6 @@ typedef int __kernel_ptrdiff_t;
typedef unsigned int __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
-typedef unsigned int __kernel_nlink_t;
typedef int __kernel_ipc_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
@@ -47,7 +45,6 @@ typedef unsigned long __kernel_sigset_t; /* at least 32 bits */
#define __kernel_ino_t __kernel_ino_t
#define __kernel_mode_t __kernel_mode_t
-#define __kernel_nlink_t __kernel_nlink_t
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
#define __kernel_uid_t __kernel_uid_t
#define __kernel_gid_t __kernel_gid_t
@@ -3,8 +3,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
typedef unsigned short __kernel_uid_t;
@@ -3,8 +3,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
typedef unsigned short __kernel_uid_t;
@@ -9,8 +9,6 @@
#if defined(__sparc__) && defined(__arch64__)
/* sparc 64 bit */
-typedef unsigned int __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;
@@ -38,9 +36,6 @@ typedef unsigned short __kernel_gid_t;
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef long __kernel_daddr_t;
#define __kernel_daddr_t __kernel_daddr_t
@@ -580,16 +580,9 @@ SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len,
unsigned long, new_len, unsigned long, flags,
unsigned long, new_addr)
{
- unsigned long ret = -EINVAL;
-
if (test_thread_flag(TIF_32BIT))
- goto out;
-
- down_write(&current->mm->mmap_sem);
- ret = do_mremap(addr, old_len, new_len, flags, new_addr);
- up_write(&current->mm->mmap_sem);
-out:
- return ret;
+ return -EINVAL;
+ return sys_mremap(addr, old_len, new_len, flags, new_addr);
}
/* we come to here via sys_nis_syscall so it can setup the regs argument */
@@ -44,7 +44,6 @@ typedef __kernel_uid32_t __compat_gid32_t;
typedef __kernel_mode_t compat_mode_t;
typedef __kernel_dev_t compat_dev_t;
typedef __kernel_loff_t compat_loff_t;
-typedef __kernel_nlink_t compat_nlink_t;
typedef __kernel_ipc_pid_t compat_ipc_pid_t;
typedef __kernel_daddr_t compat_daddr_t;
typedef __kernel_fsid_t compat_fsid_t;
@@ -10,9 +10,6 @@
typedef unsigned short __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
-typedef unsigned short __kernel_nlink_t;
-#define __kernel_nlink_t __kernel_nlink_t
-
typedef unsigned short __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
View
@@ -42,7 +42,7 @@ struct device *soc_device_to_device(struct soc_device *soc_dev)
return &soc_dev->dev;
}
-static mode_t soc_attribute_mode(struct kobject *kobj,
+static umode_t soc_attribute_mode(struct kobject *kobj,
struct attribute *attr,
int index)
{
Oops, something went wrong.

0 comments on commit 1193755

Please sign in to comment.