]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - ipc/shm.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[karo-tx-linux.git] / ipc / shm.c
index be3ec9ae454e5b9bf5fa0d84bacd6337d57daeaa..cb858df061d37185cf96b7dadd6fe8d5d3e2b869 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -193,7 +193,7 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp)
        if (!is_file_hugepages(shp->shm_file))
                shmem_lock(shp->shm_file, 0, shp->mlock_user);
        else if (shp->mlock_user)
-               user_shm_unlock(shp->shm_file->f_path.dentry->d_inode->i_size,
+               user_shm_unlock(file_inode(shp->shm_file)->i_size,
                                                shp->mlock_user);
        fput (shp->shm_file);
        security_shm_free(shp);
@@ -529,7 +529,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
         * shmid gets reported as "inode#" in /proc/pid/maps.
         * proc-ps tools use this. Changing this will break them.
         */
-       file->f_dentry->d_inode->i_ino = shp->shm_perm.id;
+       file_inode(file)->i_ino = shp->shm_perm.id;
 
        ns->shm_tot += numpages;
        error = shp->shm_perm.id;
@@ -678,7 +678,7 @@ static void shm_add_rss_swap(struct shmid_kernel *shp,
 {
        struct inode *inode;
 
-       inode = shp->shm_file->f_path.dentry->d_inode;
+       inode = file_inode(shp->shm_file);
 
        if (is_file_hugepages(shp->shm_file)) {
                struct address_space *mapping = inode->i_mapping;
@@ -1042,7 +1042,8 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
                          is_file_hugepages(shp->shm_file) ?
                                &shm_file_operations_huge :
                                &shm_file_operations);
-       if (!file)
+       err = PTR_ERR(file);
+       if (IS_ERR(file))
                goto out_free;
 
        file->private_data = sfd;
@@ -1175,7 +1176,7 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
                        (vma->vm_start - addr)/PAGE_SIZE == vma->vm_pgoff) {
 
 
-                       size = vma->vm_file->f_path.dentry->d_inode->i_size;
+                       size = file_inode(vma->vm_file)->i_size;
                        do_munmap(mm, vma->vm_start, vma->vm_end - vma->vm_start);
                        /*
                         * We discovered the size of the shm segment, so