projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote branch 'alsa/fixes' into for-linus
[firefly-linux-kernel-4.4.55.git]
/
ipc
/
shm.c
diff --git
a/ipc/shm.c
b/ipc/shm.c
index 11bec626c228c98d5f3e0512f9c6f0dd40f424dc..23256b8558193c9fcdaa2761c1b81345af090b0d 100644
(file)
--- a/
ipc/shm.c
+++ b/
ipc/shm.c
@@
-39,7
+39,6
@@
#include <linux/nsproxy.h>
#include <linux/mount.h>
#include <linux/ipc_namespace.h>
#include <linux/nsproxy.h>
#include <linux/mount.h>
#include <linux/ipc_namespace.h>
-#include <linux/ima.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
@@
-101,6
+100,7
@@
static void do_shm_rmid(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp)
void shm_exit_ns(struct ipc_namespace *ns)
{
free_ipcs(ns, &shm_ids(ns), do_shm_rmid);
void shm_exit_ns(struct ipc_namespace *ns)
{
free_ipcs(ns, &shm_ids(ns), do_shm_rmid);
+ idr_destroy(&ns->ids[IPC_SHM_IDS].ipcs_idr);
}
#endif
}
#endif
@@
-298,6
+298,9
@@
static const struct file_operations shm_file_operations = {
.mmap = shm_mmap,
.fsync = shm_fsync,
.release = shm_release,
.mmap = shm_mmap,
.fsync = shm_fsync,
.release = shm_release,
+#ifndef CONFIG_MMU
+ .get_unmapped_area = shm_get_unmapped_area,
+#endif
};
static const struct file_operations shm_file_operations_huge = {
};
static const struct file_operations shm_file_operations_huge = {
@@
-878,8
+881,8
@@
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (err)
goto out_unlock;
if (err)
goto out_unlock;
- path
.dentry = dget(shp->shm_file->f_path.dentry)
;
- path
.mnt = shp->shm_file->f_path.mnt
;
+ path
= shp->shm_file->f_path
;
+ path
_get(&path)
;
shp->shm_nattch++;
size = i_size_read(path.dentry->d_inode);
shm_unlock(shp);
shp->shm_nattch++;
size = i_size_read(path.dentry->d_inode);
shm_unlock(shp);
@@
-889,13
+892,12
@@
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (!sfd)
goto out_put_dentry;
if (!sfd)
goto out_put_dentry;
- file = alloc_file(
path.mnt, path.dentry
, f_mode,
- is_file_hugepages(shp->shm_file) ?
+ file = alloc_file(
&path
, f_mode,
+
is_file_hugepages(shp->shm_file) ?
&shm_file_operations_huge :
&shm_file_operations);
if (!file)
goto out_free;
&shm_file_operations_huge :
&shm_file_operations);
if (!file)
goto out_free;
- ima_counts_get(file);
file->private_data = sfd;
file->f_mapping = shp->shm_file->f_mapping;
file->private_data = sfd;
file->f_mapping = shp->shm_file->f_mapping;
@@
-950,7
+952,7
@@
out_unlock:
out_free:
kfree(sfd);
out_put_dentry:
out_free:
kfree(sfd);
out_put_dentry:
-
dput(path.dentry
);
+
path_put(&path
);
goto out_nattch;
}
goto out_nattch;
}