diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 23:16:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 23:16:07 -0500 |
commit | d895cb1af15c04c522a25c79cc429076987c089b (patch) | |
tree | 895dc9157e28f603d937a58be664e4e440d5530c /ipc/shm.c | |
parent | 9626357371b519f2b955fef399647181034a77fe (diff) | |
parent | d3d009cb965eae7e002ea5badf603ea8f4c34915 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile (part one) from Al Viro:
"Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent
locking violations, etc.
The most visible changes here are death of FS_REVAL_DOT (replaced with
"has ->d_weak_revalidate()") and a new helper getting from struct file
to inode. Some bits of preparation to xattr method interface changes.
Misc patches by various people sent this cycle *and* ocfs2 fixes from
several cycles ago that should've been upstream right then.
PS: the next vfs pile will be xattr stuff."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
saner proc_get_inode() calling conventions
proc: avoid extra pde_put() in proc_fill_super()
fs: change return values from -EACCES to -EPERM
fs/exec.c: make bprm_mm_init() static
ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
ocfs2: fix possible use-after-free with AIO
ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero
target: writev() on single-element vector is pointless
export kernel_write(), convert open-coded instances
fs: encode_fh: return FILEID_INVALID if invalid fid_type
kill f_vfsmnt
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
nfsd: handle vfs_getattr errors in acl protocol
switch vfs_getattr() to struct path
default SET_PERSONALITY() in linux/elf.h
ceph: prepopulate inodes only when request is aborted
d_hash_and_lookup(): export, switch open-coded instances
9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
9p: split dropping the acls from v9fs_set_create_acl()
...
Diffstat (limited to 'ipc/shm.c')
-rw-r--r-- | ipc/shm.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -193,7 +193,7 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp) | |||
193 | if (!is_file_hugepages(shp->shm_file)) | 193 | if (!is_file_hugepages(shp->shm_file)) |
194 | shmem_lock(shp->shm_file, 0, shp->mlock_user); | 194 | shmem_lock(shp->shm_file, 0, shp->mlock_user); |
195 | else if (shp->mlock_user) | 195 | else if (shp->mlock_user) |
196 | user_shm_unlock(shp->shm_file->f_path.dentry->d_inode->i_size, | 196 | user_shm_unlock(file_inode(shp->shm_file)->i_size, |
197 | shp->mlock_user); | 197 | shp->mlock_user); |
198 | fput (shp->shm_file); | 198 | fput (shp->shm_file); |
199 | security_shm_free(shp); | 199 | security_shm_free(shp); |
@@ -529,7 +529,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) | |||
529 | * shmid gets reported as "inode#" in /proc/pid/maps. | 529 | * shmid gets reported as "inode#" in /proc/pid/maps. |
530 | * proc-ps tools use this. Changing this will break them. | 530 | * proc-ps tools use this. Changing this will break them. |
531 | */ | 531 | */ |
532 | file->f_dentry->d_inode->i_ino = shp->shm_perm.id; | 532 | file_inode(file)->i_ino = shp->shm_perm.id; |
533 | 533 | ||
534 | ns->shm_tot += numpages; | 534 | ns->shm_tot += numpages; |
535 | error = shp->shm_perm.id; | 535 | error = shp->shm_perm.id; |
@@ -678,7 +678,7 @@ static void shm_add_rss_swap(struct shmid_kernel *shp, | |||
678 | { | 678 | { |
679 | struct inode *inode; | 679 | struct inode *inode; |
680 | 680 | ||
681 | inode = shp->shm_file->f_path.dentry->d_inode; | 681 | inode = file_inode(shp->shm_file); |
682 | 682 | ||
683 | if (is_file_hugepages(shp->shm_file)) { | 683 | if (is_file_hugepages(shp->shm_file)) { |
684 | struct address_space *mapping = inode->i_mapping; | 684 | struct address_space *mapping = inode->i_mapping; |
@@ -1042,7 +1042,8 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, | |||
1042 | is_file_hugepages(shp->shm_file) ? | 1042 | is_file_hugepages(shp->shm_file) ? |
1043 | &shm_file_operations_huge : | 1043 | &shm_file_operations_huge : |
1044 | &shm_file_operations); | 1044 | &shm_file_operations); |
1045 | if (!file) | 1045 | err = PTR_ERR(file); |
1046 | if (IS_ERR(file)) | ||
1046 | goto out_free; | 1047 | goto out_free; |
1047 | 1048 | ||
1048 | file->private_data = sfd; | 1049 | file->private_data = sfd; |
@@ -1175,7 +1176,7 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr) | |||
1175 | (vma->vm_start - addr)/PAGE_SIZE == vma->vm_pgoff) { | 1176 | (vma->vm_start - addr)/PAGE_SIZE == vma->vm_pgoff) { |
1176 | 1177 | ||
1177 | 1178 | ||
1178 | size = vma->vm_file->f_path.dentry->d_inode->i_size; | 1179 | size = file_inode(vma->vm_file)->i_size; |
1179 | do_munmap(mm, vma->vm_start, vma->vm_end - vma->vm_start); | 1180 | do_munmap(mm, vma->vm_start, vma->vm_end - vma->vm_start); |
1180 | /* | 1181 | /* |
1181 | * We discovered the size of the shm segment, so | 1182 | * We discovered the size of the shm segment, so |