aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-10-21 07:27:12 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-10-22 13:33:51 +0000
commit32ea910f77a26b6f746215c082d4859d24ec4251 (patch)
treec20afd5e61b6e21ccbe7c1f0070ac3481f8d7bbe /main/linux-grsec
parent03dba8682dd9206b63fdf269124b51eb0455fa69 (diff)
downloadaports-32ea910f77a26b6f746215c082d4859d24ec4251.tar.bz2
aports-32ea910f77a26b6f746215c082d4859d24ec4251.tar.xz
main/linux-gsrec: upgrade to 3.10.17
Diffstat (limited to 'main/linux-grsec')
-rw-r--r--main/linux-grsec/APKBUILD14
-rw-r--r--main/linux-grsec/grsecurity-2.9.1-3.10.17-unofficial.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.10.16-unofficial.patch)113
2 files changed, 60 insertions, 67 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index c38020a873..4c4350cff9 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,7 +2,7 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=3.10.16
+pkgver=3.10.17
case $pkgver in
*.*.*) _kernver=${pkgver%.*};;
*.*) _kernver=${pkgver};;
@@ -150,8 +150,8 @@ dev() {
}
md5sums="4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz
-029a48f796bcf8c36fad09cfe689be5a patch-3.10.16.xz
-b2c8994b3b2fa2a2da739f8c78d60fee grsecurity-2.9.1-3.10.16-unofficial.patch
+8431ee4e2467fdfde47e31701813a265 patch-3.10.17.xz
+6894537e9ccc2b296b27b42c39c64b31 grsecurity-2.9.1-3.10.17-unofficial.patch
a16f11b12381efb3bec79b9bfb329836 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch
656ae7b10dd2f18dbfa1011041d08d60 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch
aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch
@@ -162,8 +162,8 @@ c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch
866e6c4daed45d563829804f8ad50ed9 kernelconfig.x86
272aaddd0a19a5052208bc25551995a3 kernelconfig.x86_64"
sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544 linux-3.10.tar.xz
-115e02fe0a38eefdb1e4b1fa5e5878cb6b007db08e18901c2c4fb20a279790f4 patch-3.10.16.xz
-89beaae3759cc53a3b061e48bbcdfaf53d7333959c6a22090aaf40eaf540e2e0 grsecurity-2.9.1-3.10.16-unofficial.patch
+5552fc6f24a56d13d603ddc7759114a7b52e92ad2fb84a23a1b80b37b739a33b patch-3.10.17.xz
+8e82e71c0da392a601a952aa712b56a5116fcf626c19d69ae9d86dda2d200852 grsecurity-2.9.1-3.10.17-unofficial.patch
6af3757ac36a6cd3cda7b0a71b08143726383b19261294a569ad7f4042c72df3 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch
dc8e82108615657f1fb9d641efd42255a5761c06edde1b00a41ae0d314d548f0 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch
0985caa0f3ee8ed0959aeaa4214f5f8057ae8e61d50dcae39194912d31e14892 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch
@@ -174,8 +174,8 @@ fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-
7fd28634998ef1fddafed5f2516e902924245d2464b9e86476bfaa55ccfc3bc3 kernelconfig.x86
f2843ae4f9b3e3c27f3138ce4b740c2803bdab0c7a910c662d951843803b9554 kernelconfig.x86_64"
sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35 linux-3.10.tar.xz
-34cf05008f8992b7cd4d4f34b13a6a55df75ce53328eef10119069f5b60e89fce18d786bdf47ed60083535917e8113a4b0da66530b9b783cfef271b433c0f58b patch-3.10.16.xz
-474ea9a25e1356772b079db354108dd14755853f89003996af0482a1a21b83a6e592167a7e4e456afd33d4bddef5f2165f38c0e5b2ec5c0a2dec53a8ebd7c6e9 grsecurity-2.9.1-3.10.16-unofficial.patch
+38f9085d67d59cb37c32db69b84714a96f327fe74b69bb4a7304861ea6e474614216067ee08093f41739ce803b83a70400c83f06c695cb1114cf41c0b2dc7aa7 patch-3.10.17.xz
+6d27a986f32f42b12c4291ebb4b7365d8cd90b604ee9bc57344b9f9764efd7c5aae89c5ab4977878a24ae4b6e812c1db6030c3451bd15fdb2ea01a2a50e2ce41 grsecurity-2.9.1-3.10.17-unofficial.patch
81e78593288e8b0fd2c03ea9fc1450323887707f087e911f172450a122bc9b591ee83394836789730d951aeec13d0b75a64e1c05f04364abf8f80d883ddc4a02 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch
51ecb15b669f6a82940a13a38939116e003bf5dfd24496771c8279e907b72adcc63d607f0340a2940d757e12ddadb7d45c7af78ae311d284935a6296dbcac00c 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch
57d0a8bd35d19cf657ded58efe24517d2252aec6984040713ba173a34edb5887ececaa2985076bc6a149eaa57639fd98a042c1c2d226ed4ad8dd5ed0e230717e 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch
diff --git a/main/linux-grsec/grsecurity-2.9.1-3.10.16-unofficial.patch b/main/linux-grsec/grsecurity-2.9.1-3.10.17-unofficial.patch
index e11ab9abf4..3a78478212 100644
--- a/main/linux-grsec/grsecurity-2.9.1-3.10.16-unofficial.patch
+++ b/main/linux-grsec/grsecurity-2.9.1-3.10.17-unofficial.patch
@@ -281,7 +281,7 @@ index 2fe6e76..889ee23 100644
pcd. [PARIDE]
diff --git a/Makefile b/Makefile
-index e9528d2..0c2aa58 100644
+index 5c7d3d6..aa1c9c3 100644
--- a/Makefile
+++ b/Makefile
@@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -2890,7 +2890,7 @@ index 1f2740e..b36e225 100644
};
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
-index 5bc2615..dcd439f 100644
+index ab1fe3b..dcd439f 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -223,6 +223,7 @@ void machine_power_off(void)
@@ -2943,15 +2943,7 @@ index 5bc2615..dcd439f 100644
return 0;
}
arch_initcall(gate_vma_init);
-@@ -466,48 +461,23 @@ int in_gate_area_no_mm(unsigned long addr)
- {
- return in_gate_area(NULL, addr);
- }
--#define is_gate_vma(vma) ((vma) = &gate_vma)
-+#define is_gate_vma(vma) ((vma) == &gate_vma)
- #else
- #define is_gate_vma(vma) 0
- #endif
+@@ -473,41 +468,16 @@ int in_gate_area_no_mm(unsigned long addr)
const char *arch_vma_name(struct vm_area_struct *vma)
{
@@ -7347,7 +7339,7 @@ index 5dfd248..64914ac 100644
return addr;
}
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
-index 04e47c6..7a8faf6 100644
+index b3f87a3..5d5d03d 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -727,9 +727,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
@@ -15171,7 +15163,7 @@ index 59c6c40..5e0b22c 100644
struct compat_timespec {
compat_time_t tv_sec;
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
-index e99ac27..10d834e 100644
+index 4af181d..eb8011f 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -203,7 +203,7 @@
@@ -20774,10 +20766,10 @@ index addb207..99635fa 100644
+EXPORT_SYMBOL(pax_check_alloca);
+#endif
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
-index d32abea..74daf4f 100644
+index 174da5f..5e55606 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
-@@ -800,8 +800,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
+@@ -803,8 +803,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
static void early_panic(char *msg)
{
@@ -25364,7 +25356,7 @@ index f2bb9c9..bed145d7 100644
1:
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 56f7fcf..2cfe4f1 100644
+index 91964c6..bbab1da 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -110,6 +110,7 @@
@@ -25429,16 +25421,16 @@ index 56f7fcf..2cfe4f1 100644
/* Boot loader ID and version as integers, for the benefit of proc_dointvec */
int bootloader_type, bootloader_version;
-@@ -444,7 +483,7 @@ static void __init parse_setup_data(void)
+@@ -442,7 +481,7 @@ static void __init parse_setup_data(void)
- switch (data->type) {
+ switch (data_type) {
case SETUP_E820_EXT:
-- parse_e820_ext(data);
-+ parse_e820_ext((struct setup_data __force_kernel *)data);
+- parse_e820_ext(pa_data, data_len);
++ parse_e820_ext((struct setup_data __force_kernel *)pa_data, data_len);
break;
case SETUP_DTB:
add_dtb(pa_data);
-@@ -771,7 +810,7 @@ static void __init trim_bios_range(void)
+@@ -768,7 +807,7 @@ static void __init trim_bios_range(void)
* area (640->1Mb) as ram even though it is not.
* take them out.
*/
@@ -25447,7 +25439,7 @@ index 56f7fcf..2cfe4f1 100644
sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
}
-@@ -779,7 +818,7 @@ static void __init trim_bios_range(void)
+@@ -776,7 +815,7 @@ static void __init trim_bios_range(void)
/* called before trim_bios_range() to spare extra sanitize */
static void __init e820_add_kernel_range(void)
{
@@ -25456,7 +25448,7 @@ index 56f7fcf..2cfe4f1 100644
u64 size = __pa_symbol(_end) - start;
/*
-@@ -841,8 +880,12 @@ static void __init trim_low_memory_range(void)
+@@ -838,8 +877,12 @@ static void __init trim_low_memory_range(void)
void __init setup_arch(char **cmdline_p)
{
@@ -25469,7 +25461,7 @@ index 56f7fcf..2cfe4f1 100644
early_reserve_initrd();
-@@ -934,14 +977,14 @@ void __init setup_arch(char **cmdline_p)
+@@ -931,14 +974,14 @@ void __init setup_arch(char **cmdline_p)
if (!boot_params.hdr.root_flags)
root_mountflags &= ~MS_RDONLY;
@@ -37374,7 +37366,7 @@ index 5c5cc00..ac9edb7 100644
if (cmd != SIOCWANDEV)
diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 35487e8..dac8bd1 100644
+index 81eefa1..219a156 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -272,8 +272,13 @@
@@ -39012,10 +39004,10 @@ index c8d16a6..ca71b5e 100644
iir = I915_READ(IIR);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 2667d6d..410dc80 100644
+index ab95259..8898d43 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8939,13 +8939,13 @@ struct intel_quirk {
+@@ -8935,13 +8935,13 @@ struct intel_quirk {
int subsystem_vendor;
int subsystem_device;
void (*hook)(struct drm_device *dev);
@@ -39031,7 +39023,7 @@ index 2667d6d..410dc80 100644
static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
{
-@@ -8953,18 +8953,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
+@@ -8949,18 +8949,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
return 1;
}
@@ -40196,10 +40188,10 @@ index 6351aba..dc4aaf4 100644
int res = 0;
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
-index 98814d1..9435d05 100644
+index 3288f13..71cfb4e 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
-@@ -1093,7 +1093,7 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num)
+@@ -1106,7 +1106,7 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num)
{
struct applesmc_node_group *grp;
struct applesmc_dev_attr *node;
@@ -54960,10 +54952,10 @@ index dafafba..10b3b27 100644
EXPORT_SYMBOL(dump_write);
diff --git a/fs/dcache.c b/fs/dcache.c
-index f09b908..04b9690 100644
+index da89cdf..5347dba 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
-@@ -3086,7 +3086,8 @@ void __init vfs_caches_init(unsigned long mempages)
+@@ -3097,7 +3097,8 @@ void __init vfs_caches_init(unsigned long mempages)
mempages -= reserve;
names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
@@ -57719,7 +57711,7 @@ index 62b484e..0f9a140 100644
kfree(s);
}
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index a3f868a..bb308ae 100644
+index 4e5f332..3cb6350 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -152,6 +152,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
@@ -73222,7 +73214,7 @@ index ec1aee4..1077986 100644
asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, size_t);
/*
diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
-index 842de22..7f3a41f 100644
+index ded4299..da50e3b 100644
--- a/include/linux/compiler-gcc4.h
+++ b/include/linux/compiler-gcc4.h
@@ -39,9 +39,29 @@
@@ -76796,10 +76788,10 @@ index 34a1e10..03a6d03 100644
struct proc_ns {
void *ns;
diff --git a/include/linux/random.h b/include/linux/random.h
-index 3b9377d..61b506a 100644
+index 6312dd9..f67904d 100644
--- a/include/linux/random.h
+++ b/include/linux/random.h
-@@ -32,6 +32,11 @@ void prandom_seed(u32 seed);
+@@ -33,6 +33,11 @@ void prandom_seed(u32 seed);
u32 prandom_u32_state(struct rnd_state *);
void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes);
@@ -79832,10 +79824,10 @@ index a67ef9d..2d17ed9 100644
#ifdef CONFIG_BLK_DEV_RAM
int fd;
diff --git a/init/main.c b/init/main.c
-index 9484f4b..0eac7c3 100644
+index e83ac04..ddd6ed5 100644
--- a/init/main.c
+++ b/init/main.c
-@@ -100,6 +100,8 @@ static inline void mark_rodata_ro(void) { }
+@@ -101,6 +101,8 @@ static inline void mark_rodata_ro(void) { }
extern void tc_init(void);
#endif
@@ -79844,7 +79836,7 @@ index 9484f4b..0eac7c3 100644
/*
* Debug helper: via this flag we know that we are in 'early bootup code'
* where only the boot processor is running with IRQ disabled. This means
-@@ -153,6 +155,74 @@ static int __init set_reset_devices(char *str)
+@@ -154,6 +156,74 @@ static int __init set_reset_devices(char *str)
__setup("reset_devices", set_reset_devices);
@@ -79919,7 +79911,7 @@ index 9484f4b..0eac7c3 100644
static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
static const char *panic_later, *panic_param;
-@@ -655,8 +725,6 @@ static void __init do_ctors(void)
+@@ -656,8 +726,6 @@ static void __init do_ctors(void)
bool initcall_debug;
core_param(initcall_debug, initcall_debug, bool, 0644);
@@ -79928,7 +79920,7 @@ index 9484f4b..0eac7c3 100644
static int __init_or_module do_one_initcall_debug(initcall_t fn)
{
ktime_t calltime, delta, rettime;
-@@ -679,23 +747,22 @@ int __init_or_module do_one_initcall(initcall_t fn)
+@@ -680,23 +748,22 @@ int __init_or_module do_one_initcall(initcall_t fn)
{
int count = preempt_count();
int ret;
@@ -79956,7 +79948,7 @@ index 9484f4b..0eac7c3 100644
return ret;
}
-@@ -748,8 +815,14 @@ static void __init do_initcall_level(int level)
+@@ -749,8 +816,14 @@ static void __init do_initcall_level(int level)
level, level,
&repair_env_string);
@@ -79972,7 +79964,7 @@ index 9484f4b..0eac7c3 100644
}
static void __init do_initcalls(void)
-@@ -783,8 +856,14 @@ static void __init do_pre_smp_initcalls(void)
+@@ -785,8 +858,14 @@ static void __init do_pre_smp_initcalls(void)
{
initcall_t *fn;
@@ -79988,7 +79980,7 @@ index 9484f4b..0eac7c3 100644
}
/*
-@@ -802,8 +881,8 @@ static int run_init_process(const char *init_filename)
+@@ -804,8 +883,8 @@ static int run_init_process(const char *init_filename)
{
argv_init[0] = init_filename;
return do_execve(init_filename,
@@ -79999,7 +79991,7 @@ index 9484f4b..0eac7c3 100644
}
static noinline void __init kernel_init_freeable(void);
-@@ -880,7 +959,7 @@ static noinline void __init kernel_init_freeable(void)
+@@ -882,7 +961,7 @@ static noinline void __init kernel_init_freeable(void)
do_basic_setup();
/* Open the /dev/console on the rootfs, this should never fail */
@@ -80008,7 +80000,7 @@ index 9484f4b..0eac7c3 100644
pr_err("Warning: unable to open an initial console.\n");
(void) sys_dup(0);
-@@ -893,11 +972,13 @@ static noinline void __init kernel_init_freeable(void)
+@@ -895,11 +974,13 @@ static noinline void __init kernel_init_freeable(void)
if (!ramdisk_execute_command)
ramdisk_execute_command = "/init";
@@ -80098,10 +80090,10 @@ index e4e47f6..a85e0ad 100644
if (u->mq_bytes + mq_bytes < u->mq_bytes ||
u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) {
diff --git a/ipc/msg.c b/ipc/msg.c
-index f8fbe2c..074649e 100644
+index 558aa91..359e718 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
-@@ -296,18 +296,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
+@@ -297,18 +297,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
return security_msg_queue_associate(msq, msgflg);
}
@@ -80127,10 +80119,10 @@ index f8fbe2c..074649e 100644
msg_params.flg = msgflg;
diff --git a/ipc/sem.c b/ipc/sem.c
-index 70480a3..f4e8262 100644
+index 8c4f59b..3a3f4ff 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
-@@ -460,10 +460,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
+@@ -562,10 +562,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
return 0;
}
@@ -80147,7 +80139,7 @@ index 70480a3..f4e8262 100644
struct ipc_params sem_params;
ns = current->nsproxy->ipc_ns;
-@@ -471,10 +476,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
+@@ -573,10 +578,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
if (nsems < 0 || nsems > ns->sc_semmsl)
return -EINVAL;
@@ -80159,10 +80151,10 @@ index 70480a3..f4e8262 100644
sem_params.flg = semflg;
sem_params.u.nsems = nsems;
diff --git a/ipc/shm.c b/ipc/shm.c
-index 7e199fa..180a1ca 100644
+index 7b87bea..fd0b9bd 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
-@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
+@@ -72,6 +72,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
#endif
@@ -80177,7 +80169,7 @@ index 7e199fa..180a1ca 100644
void shm_init_ns(struct ipc_namespace *ns)
{
ns->shm_ctlmax = SHMMAX;
-@@ -531,6 +539,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
+@@ -551,6 +559,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
shp->shm_lprid = 0;
shp->shm_atim = shp->shm_dtim = 0;
shp->shm_ctim = get_seconds();
@@ -80192,7 +80184,7 @@ index 7e199fa..180a1ca 100644
shp->shm_segsz = size;
shp->shm_nattch = 0;
shp->shm_file = file;
-@@ -582,18 +598,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
+@@ -604,18 +620,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
return 0;
}
@@ -80217,7 +80209,7 @@ index 7e199fa..180a1ca 100644
shm_params.key = key;
shm_params.flg = shmflg;
shm_params.u.size = size;
-@@ -1014,6 +1031,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
+@@ -1076,6 +1093,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
f_mode = FMODE_READ | FMODE_WRITE;
}
if (shmflg & SHM_EXEC) {
@@ -80230,7 +80222,7 @@ index 7e199fa..180a1ca 100644
prot |= PROT_EXEC;
acc_mode |= S_IXUGO;
}
-@@ -1037,9 +1060,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
+@@ -1100,10 +1123,22 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
if (err)
goto out_unlock;
@@ -80243,6 +80235,7 @@ index 7e199fa..180a1ca 100644
+ }
+#endif
+
+ ipc_lock_object(&shp->shm_perm);
path = shp->shm_file->f_path;
path_get(&path);
shp->shm_nattch++;
@@ -80250,8 +80243,8 @@ index 7e199fa..180a1ca 100644
+ shp->shm_lapid = current->pid;
+#endif
size = i_size_read(path.dentry->d_inode);
- shm_unlock(shp);
-
+ ipc_unlock_object(&shp->shm_perm);
+ rcu_read_unlock();
diff --git a/kernel/acct.c b/kernel/acct.c
index 8d6e145..33e0b1e 100644
--- a/kernel/acct.c
@@ -90084,7 +90077,7 @@ index 6280da8..b5c090e 100644
/*
diff --git a/mm/shmem.c b/mm/shmem.c
-index 5e6a842..b41916e 100644
+index 509b393..49ecfea 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -33,7 +33,7 @@