diff options
author | Leonardo Arena <rnalrd@alpinelinux.org> | 2014-01-07 14:49:56 +0000 |
---|---|---|
committer | Leonardo Arena <rnalrd@alpinelinux.org> | 2014-01-07 14:49:56 +0000 |
commit | 0b27f90764ff485db3bbcf1edccc3dafdf6935d0 (patch) | |
tree | 485f199b8739758737b5a7616c0bb3cdb4e80530 | |
parent | daf1071258d41b2e18b9603aab13a0812dcc5a03 (diff) | |
download | alpine_aports-0b27f90764ff485db3bbcf1edccc3dafdf6935d0.tar.bz2 alpine_aports-0b27f90764ff485db3bbcf1edccc3dafdf6935d0.tar.xz alpine_aports-0b27f90764ff485db3bbcf1edccc3dafdf6935d0.zip |
main/linux-virt-grsec: upgrade to 3.10.25
-rw-r--r-- | main/linux-virt-grsec/APKBUILD | 18 | ||||
-rw-r--r-- | main/linux-virt-grsec/grsecurity-2.9.1-3.10.25-unofficial.patch (renamed from main/linux-virt-grsec/grsecurity-2.9.1-3.10.23-unofficial.patch) | 244 | ||||
-rw-r--r-- | main/linux-virt-grsec/net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | 67 |
3 files changed, 195 insertions, 134 deletions
diff --git a/main/linux-virt-grsec/APKBUILD b/main/linux-virt-grsec/APKBUILD index d844817155..dd1f263743 100644 --- a/main/linux-virt-grsec/APKBUILD +++ b/main/linux-virt-grsec/APKBUILD | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | _flavor=grsec | 4 | _flavor=grsec |
5 | pkgname=linux-virt-${_flavor} | 5 | pkgname=linux-virt-${_flavor} |
6 | pkgver=3.10.23 | 6 | pkgver=3.10.25 |
7 | case $pkgver in | 7 | case $pkgver in |
8 | *.*.*) _kernver=${pkgver%.*};; | 8 | *.*.*) _kernver=${pkgver%.*};; |
9 | *.*) _kernver=${pkgver};; | 9 | *.*) _kernver=${pkgver};; |
@@ -27,6 +27,7 @@ source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz | |||
27 | 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 27 | 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
28 | fix-memory-map-for-PIE-applications.patch | 28 | fix-memory-map-for-PIE-applications.patch |
29 | sysctl_lxc.patch | 29 | sysctl_lxc.patch |
30 | net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | ||
30 | 31 | ||
31 | kernelconfig.x86 | 32 | kernelconfig.x86 |
32 | kernelconfig.x86_64 | 33 | kernelconfig.x86_64 |
@@ -151,8 +152,8 @@ dev() { | |||
151 | } | 152 | } |
152 | 153 | ||
153 | md5sums="4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz | 154 | md5sums="4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz |
154 | 8b9650e10f8beee769545b51202766a5 patch-3.10.23.xz | 155 | a216b82ba3670c979241a9ef9f1438e4 patch-3.10.25.xz |
155 | 82efe899230f7246ca99f3d334c0c1b8 grsecurity-2.9.1-3.10.23-unofficial.patch | 156 | 83142ed6972c71cf8996e988669a5369 grsecurity-2.9.1-3.10.25-unofficial.patch |
156 | a16f11b12381efb3bec79b9bfb329836 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 157 | a16f11b12381efb3bec79b9bfb329836 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
157 | 656ae7b10dd2f18dbfa1011041d08d60 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 158 | 656ae7b10dd2f18dbfa1011041d08d60 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
158 | aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 159 | aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
@@ -161,11 +162,12 @@ aa454ffb96428586447775c21449e284 0003-ipv4-properly-refresh-rtable-entries-on-p | |||
161 | 1a5800a2122ba0cc0d06733cb3bb8b8f 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 162 | 1a5800a2122ba0cc0d06733cb3bb8b8f 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
162 | c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch | 163 | c6a4ae7e8ca6159e1631545515805216 fix-memory-map-for-PIE-applications.patch |
163 | b3c0153d53e508e03d73b94d15b24a96 sysctl_lxc.patch | 164 | b3c0153d53e508e03d73b94d15b24a96 sysctl_lxc.patch |
165 | ae36fdf685dd97f51bce3a5124f7dff6 net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | ||
164 | 539c848d541c1656851fe865018273df kernelconfig.x86 | 166 | 539c848d541c1656851fe865018273df kernelconfig.x86 |
165 | 82cd965fc82651f2e6b35e75c17d8031 kernelconfig.x86_64" | 167 | 82cd965fc82651f2e6b35e75c17d8031 kernelconfig.x86_64" |
166 | sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544 linux-3.10.tar.xz | 168 | sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544 linux-3.10.tar.xz |
167 | bdf3983ff3e26c5781edb19a8d0d7765e2e0282cfabda2b0652cc0deff53f445 patch-3.10.23.xz | 169 | 58323f60a2c5156e9e46b5947e7b3d81be44895c2b5dc31ced8d0e5346ca4d43 patch-3.10.25.xz |
168 | f0dfa654e64e79c96127a0f8cd4867a0170f099c7116e7f45e27572294b1b818 grsecurity-2.9.1-3.10.23-unofficial.patch | 170 | 069ba22e11bbed3d833546e16b91399731cd82ac97882716841c679c83c2b247 grsecurity-2.9.1-3.10.25-unofficial.patch |
169 | 6af3757ac36a6cd3cda7b0a71b08143726383b19261294a569ad7f4042c72df3 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 171 | 6af3757ac36a6cd3cda7b0a71b08143726383b19261294a569ad7f4042c72df3 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
170 | dc8e82108615657f1fb9d641efd42255a5761c06edde1b00a41ae0d314d548f0 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 172 | dc8e82108615657f1fb9d641efd42255a5761c06edde1b00a41ae0d314d548f0 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
171 | 0985caa0f3ee8ed0959aeaa4214f5f8057ae8e61d50dcae39194912d31e14892 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 173 | 0985caa0f3ee8ed0959aeaa4214f5f8057ae8e61d50dcae39194912d31e14892 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
@@ -174,11 +176,12 @@ ae32bb72afa170e6c3788c564b342763aba5945afacc1e2ebfc096adf50d77a3 0005-ipv4-use- | |||
174 | fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 176 | fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
175 | 500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch | 177 | 500f3577310be52e87b9fecdc2e9c4ca43210fd97d69089f9005d484563f74c7 fix-memory-map-for-PIE-applications.patch |
176 | 9ba55b0f45d5aa97503e376a13be6d249a10f32e36687055b2fa1e5a39fa0584 sysctl_lxc.patch | 178 | 9ba55b0f45d5aa97503e376a13be6d249a10f32e36687055b2fa1e5a39fa0584 sysctl_lxc.patch |
179 | b130be723743442140637b74da6065061aabb0a0ce6ce6f5cf784f6e5776ae14 net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | ||
177 | 997d4c8a5a2b911047d26fe1bf8ee8d5cd3b7133e6abdc07b7deacd0b3eb2330 kernelconfig.x86 | 180 | 997d4c8a5a2b911047d26fe1bf8ee8d5cd3b7133e6abdc07b7deacd0b3eb2330 kernelconfig.x86 |
178 | 7845194551137fbc3b69a75249696bc843bb7fe7f4a4e6b0582c0ca0856caa64 kernelconfig.x86_64" | 181 | 7845194551137fbc3b69a75249696bc843bb7fe7f4a4e6b0582c0ca0856caa64 kernelconfig.x86_64" |
179 | sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35 linux-3.10.tar.xz | 182 | sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35 linux-3.10.tar.xz |
180 | 0fdb65f1c45e490e1f2206589273e4b8f0f142ab6b16341cb52977e0c6a983b359f01456a9cae3e1c139d5ead5de106c10909b7fdb6a156675cad5d39374e97f patch-3.10.23.xz | 183 | 89e009d91e90ed76f860e48a944d702d3b1bf5179c07e591918152baacd5592ae0e4d50accfc6bfdccccda0557d61bb30a88bbe0f90afd8be69c638c63c015fc patch-3.10.25.xz |
181 | 8905d7215d9f82662e0e7b897fc2fb258c5978d12fed9cf618e60c7b0926af2f76e3b242140e9d3ab4988cee684f350aaf26270d1a8518297cde9928361d146d grsecurity-2.9.1-3.10.23-unofficial.patch | 184 | 25aa4922fc0b4a9cd689def07929f9e1bc2fe92424115f74c89c74167b9e94db8f6114125d664268ce8ce3084e9d7b734b81f48d22fd27584c2bf0d51fd03d43 grsecurity-2.9.1-3.10.25-unofficial.patch |
182 | 81e78593288e8b0fd2c03ea9fc1450323887707f087e911f172450a122bc9b591ee83394836789730d951aeec13d0b75a64e1c05f04364abf8f80d883ddc4a02 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch | 185 | 81e78593288e8b0fd2c03ea9fc1450323887707f087e911f172450a122bc9b591ee83394836789730d951aeec13d0b75a64e1c05f04364abf8f80d883ddc4a02 0001-net-inform-NETDEV_CHANGE-callbacks-which-flags-were-.patch |
183 | 51ecb15b669f6a82940a13a38939116e003bf5dfd24496771c8279e907b72adcc63d607f0340a2940d757e12ddadb7d45c7af78ae311d284935a6296dbcac00c 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch | 186 | 51ecb15b669f6a82940a13a38939116e003bf5dfd24496771c8279e907b72adcc63d607f0340a2940d757e12ddadb7d45c7af78ae311d284935a6296dbcac00c 0002-arp-flush-arp-cache-on-IFF_NOARP-change.patch |
184 | 57d0a8bd35d19cf657ded58efe24517d2252aec6984040713ba173a34edb5887ececaa2985076bc6a149eaa57639fd98a042c1c2d226ed4ad8dd5ed0e230717e 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch | 187 | 57d0a8bd35d19cf657ded58efe24517d2252aec6984040713ba173a34edb5887ececaa2985076bc6a149eaa57639fd98a042c1c2d226ed4ad8dd5ed0e230717e 0003-ipv4-properly-refresh-rtable-entries-on-pmtu-redirec.patch |
@@ -187,5 +190,6 @@ d2f578ad1d6e1fe52b55863e5bf338ae8201b828a498ec3e42e549c55295d3d1c6c3adfa9e226d71 | |||
187 | 249140374c19a5599876268ff5b3cda2e136681aee103b4a9fff5d7d346f8e3295a907fb43db0701b8a9fece64c299ad2abac0434259cce6631307ce84090205 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch | 190 | 249140374c19a5599876268ff5b3cda2e136681aee103b4a9fff5d7d346f8e3295a907fb43db0701b8a9fece64c299ad2abac0434259cce6631307ce84090205 0006-ipv4-use-next-hop-exceptions-also-for-input-routes.patch |
188 | 4665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch | 191 | 4665c56ae1bbac311f9205d64918e84ee8b01d47d6e2396ff6b8adfb10aada7f7254531ce62e31edbb65c2a54a830f09ad05d314dfcd75d6272f4068945ad7c7 fix-memory-map-for-PIE-applications.patch |
189 | 41071e21c59997604a380575d3c4171d35a12eaae6ddcf158d95e4fd5ccc69d61753cbd38b7bd08d879cce5bfea3fed2df15e5a3dca944f6f7cbd95d5d2daa23 sysctl_lxc.patch | 192 | 41071e21c59997604a380575d3c4171d35a12eaae6ddcf158d95e4fd5ccc69d61753cbd38b7bd08d879cce5bfea3fed2df15e5a3dca944f6f7cbd95d5d2daa23 sysctl_lxc.patch |
193 | 100fddcb0311d01bed68831287805921afd6a788a81ac6aa1c71823eb10b83c906bc38b0607fdbe71515aef43e628a9863b3fd53953698fe91326c70918c9bd9 net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | ||
190 | 08f5bb86f03415f60e9bb171ffa192fa70fa85dafeada10817a4b8ae7932fffd1b0f2df01750407e576bb71cd6c3f2c5fe76f2613922cd77f398bce134fd3ec2 kernelconfig.x86 | 194 | 08f5bb86f03415f60e9bb171ffa192fa70fa85dafeada10817a4b8ae7932fffd1b0f2df01750407e576bb71cd6c3f2c5fe76f2613922cd77f398bce134fd3ec2 kernelconfig.x86 |
191 | 7a373bec279fe00601bff7ed64c5a09bb4318bf07557fece194afb426d78bf13191b0510642192518f3ffa68b9a36aa6f971f77f55ea09ae4f42c4a84afc00a5 kernelconfig.x86_64" | 195 | 7a373bec279fe00601bff7ed64c5a09bb4318bf07557fece194afb426d78bf13191b0510642192518f3ffa68b9a36aa6f971f77f55ea09ae4f42c4a84afc00a5 kernelconfig.x86_64" |
diff --git a/main/linux-virt-grsec/grsecurity-2.9.1-3.10.23-unofficial.patch b/main/linux-virt-grsec/grsecurity-2.9.1-3.10.25-unofficial.patch index cc4eeaf731..a8bca6ee2b 100644 --- a/main/linux-virt-grsec/grsecurity-2.9.1-3.10.23-unofficial.patch +++ b/main/linux-virt-grsec/grsecurity-2.9.1-3.10.25-unofficial.patch | |||
@@ -281,7 +281,7 @@ index 2fe6e76..889ee23 100644 | |||
281 | 281 | ||
282 | pcd. [PARIDE] | 282 | pcd. [PARIDE] |
283 | diff --git a/Makefile b/Makefile | 283 | diff --git a/Makefile b/Makefile |
284 | index c6d2ec5..b2bfe62 100644 | 284 | index cd97e9a..a803acc 100644 |
285 | --- a/Makefile | 285 | --- a/Makefile |
286 | +++ b/Makefile | 286 | +++ b/Makefile |
287 | @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ | 287 | @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
@@ -1972,7 +1972,7 @@ index 86b8fe3..e25f975 100644 | |||
1972 | #define L_PTE_DIRTY_HIGH (1 << (55 - 32)) | 1972 | #define L_PTE_DIRTY_HIGH (1 << (55 - 32)) |
1973 | 1973 | ||
1974 | diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h | 1974 | diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h |
1975 | index 9bcd262..1ff999b 100644 | 1975 | index 5aac06f..4cd2e7f 100644 |
1976 | --- a/arch/arm/include/asm/pgtable.h | 1976 | --- a/arch/arm/include/asm/pgtable.h |
1977 | +++ b/arch/arm/include/asm/pgtable.h | 1977 | +++ b/arch/arm/include/asm/pgtable.h |
1978 | @@ -30,6 +30,9 @@ | 1978 | @@ -30,6 +30,9 @@ |
@@ -2890,7 +2890,7 @@ index 1f2740e..b36e225 100644 | |||
2890 | }; | 2890 | }; |
2891 | 2891 | ||
2892 | diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c | 2892 | diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c |
2893 | index ab1fe3b..dcd439f 100644 | 2893 | index ac4c2e5..234fb25 100644 |
2894 | --- a/arch/arm/kernel/process.c | 2894 | --- a/arch/arm/kernel/process.c |
2895 | +++ b/arch/arm/kernel/process.c | 2895 | +++ b/arch/arm/kernel/process.c |
2896 | @@ -223,6 +223,7 @@ void machine_power_off(void) | 2896 | @@ -223,6 +223,7 @@ void machine_power_off(void) |
@@ -2921,7 +2921,7 @@ index ab1fe3b..dcd439f 100644 | |||
2921 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" | 2921 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" |
2922 | "sp : %08lx ip : %08lx fp : %08lx\n", | 2922 | "sp : %08lx ip : %08lx fp : %08lx\n", |
2923 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, | 2923 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, |
2924 | @@ -426,12 +427,6 @@ unsigned long get_wchan(struct task_struct *p) | 2924 | @@ -429,12 +430,6 @@ unsigned long get_wchan(struct task_struct *p) |
2925 | return 0; | 2925 | return 0; |
2926 | } | 2926 | } |
2927 | 2927 | ||
@@ -2934,7 +2934,7 @@ index ab1fe3b..dcd439f 100644 | |||
2934 | #ifdef CONFIG_MMU | 2934 | #ifdef CONFIG_MMU |
2935 | #ifdef CONFIG_KUSER_HELPERS | 2935 | #ifdef CONFIG_KUSER_HELPERS |
2936 | /* | 2936 | /* |
2937 | @@ -447,7 +442,7 @@ static struct vm_area_struct gate_vma = { | 2937 | @@ -450,7 +445,7 @@ static struct vm_area_struct gate_vma = { |
2938 | 2938 | ||
2939 | static int __init gate_vma_init(void) | 2939 | static int __init gate_vma_init(void) |
2940 | { | 2940 | { |
@@ -2943,7 +2943,7 @@ index ab1fe3b..dcd439f 100644 | |||
2943 | return 0; | 2943 | return 0; |
2944 | } | 2944 | } |
2945 | arch_initcall(gate_vma_init); | 2945 | arch_initcall(gate_vma_init); |
2946 | @@ -473,41 +468,16 @@ int in_gate_area_no_mm(unsigned long addr) | 2946 | @@ -476,41 +471,16 @@ int in_gate_area_no_mm(unsigned long addr) |
2947 | 2947 | ||
2948 | const char *arch_vma_name(struct vm_area_struct *vma) | 2948 | const char *arch_vma_name(struct vm_area_struct *vma) |
2949 | { | 2949 | { |
@@ -3596,7 +3596,7 @@ index 044c31d..2ee0861 100644 | |||
3596 | struct omap_device *omap_device_alloc(struct platform_device *pdev, | 3596 | struct omap_device *omap_device_alloc(struct platform_device *pdev, |
3597 | struct omap_hwmod **ohs, int oh_cnt); | 3597 | struct omap_hwmod **ohs, int oh_cnt); |
3598 | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c | 3598 | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c |
3599 | index 7341eff..fd75e34 100644 | 3599 | index 44c609a..a63fbf8 100644 |
3600 | --- a/arch/arm/mach-omap2/omap_hwmod.c | 3600 | --- a/arch/arm/mach-omap2/omap_hwmod.c |
3601 | +++ b/arch/arm/mach-omap2/omap_hwmod.c | 3601 | +++ b/arch/arm/mach-omap2/omap_hwmod.c |
3602 | @@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops { | 3602 | @@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops { |
@@ -4098,7 +4098,7 @@ index 04d9006..c547d85 100644 | |||
4098 | return __arm_ioremap_caller(phys_addr, size, mtype, | 4098 | return __arm_ioremap_caller(phys_addr, size, mtype, |
4099 | __builtin_return_address(0)); | 4099 | __builtin_return_address(0)); |
4100 | diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c | 4100 | diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c |
4101 | index 10062ce..8695745 100644 | 4101 | index f0ef2f7..08d2f76a 100644 |
4102 | --- a/arch/arm/mm/mmap.c | 4102 | --- a/arch/arm/mm/mmap.c |
4103 | +++ b/arch/arm/mm/mmap.c | 4103 | +++ b/arch/arm/mm/mmap.c |
4104 | @@ -59,6 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, | 4104 | @@ -59,6 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, |
@@ -7265,7 +7265,7 @@ index 2a625fb..9908930 100644 | |||
7265 | DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", | 7265 | DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", |
7266 | me->arch.unwind_section, table, end, gp); | 7266 | me->arch.unwind_section, table, end, gp); |
7267 | diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c | 7267 | diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c |
7268 | index 5dfd248..64914ac 100644 | 7268 | index 0d3a9d4..a11bc6b 100644 |
7269 | --- a/arch/parisc/kernel/sys_parisc.c | 7269 | --- a/arch/parisc/kernel/sys_parisc.c |
7270 | +++ b/arch/parisc/kernel/sys_parisc.c | 7270 | +++ b/arch/parisc/kernel/sys_parisc.c |
7271 | @@ -33,9 +33,11 @@ | 7271 | @@ -33,9 +33,11 @@ |
@@ -7289,12 +7289,12 @@ index 5dfd248..64914ac 100644 | |||
7289 | return vm_unmapped_area(&info); | 7289 | return vm_unmapped_area(&info); |
7290 | } | 7290 | } |
7291 | 7291 | ||
7292 | @@ -61,10 +64,11 @@ static int get_offset(struct address_space *mapping) | 7292 | @@ -68,16 +71,18 @@ static unsigned long shared_align_offset(struct file *filp, unsigned long pgoff) |
7293 | return (unsigned long) mapping >> 8; | 7293 | return (get_offset(mapping) + pgoff) << PAGE_SHIFT; |
7294 | } | 7294 | } |
7295 | 7295 | ||
7296 | -static unsigned long get_shared_area(struct address_space *mapping, | 7296 | -static unsigned long get_shared_area(struct file *filp, unsigned long addr, |
7297 | - unsigned long addr, unsigned long len, unsigned long pgoff) | 7297 | - unsigned long len, unsigned long pgoff) |
7298 | +static unsigned long get_shared_area(struct file *filp, struct address_space *mapping, | 7298 | +static unsigned long get_shared_area(struct file *filp, struct address_space *mapping, |
7299 | + unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) | 7299 | + unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) |
7300 | { | 7300 | { |
@@ -7303,15 +7303,14 @@ index 5dfd248..64914ac 100644 | |||
7303 | 7303 | ||
7304 | info.flags = 0; | 7304 | info.flags = 0; |
7305 | info.length = len; | 7305 | info.length = len; |
7306 | @@ -72,6 +76,7 @@ static unsigned long get_shared_area(struct address_space *mapping, | 7306 | info.low_limit = PAGE_ALIGN(addr); |
7307 | info.high_limit = TASK_SIZE; | 7307 | info.high_limit = TASK_SIZE; |
7308 | info.align_mask = PAGE_MASK & (SHMLBA - 1); | 7308 | info.align_mask = PAGE_MASK & (SHMLBA - 1); |
7309 | info.align_offset = (get_offset(mapping) + pgoff) << PAGE_SHIFT; | ||
7310 | + info.threadstack_offset = offset; | 7309 | + info.threadstack_offset = offset; |
7310 | info.align_offset = shared_align_offset(filp, pgoff); | ||
7311 | return vm_unmapped_area(&info); | 7311 | return vm_unmapped_area(&info); |
7312 | } | 7312 | } |
7313 | 7313 | @@ -93,13 +98,20 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, | |
7314 | @@ -86,15 +91,22 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, | ||
7315 | return -EINVAL; | 7314 | return -EINVAL; |
7316 | return addr; | 7315 | return addr; |
7317 | } | 7316 | } |
@@ -7326,16 +7325,13 @@ index 5dfd248..64914ac 100644 | |||
7326 | + | 7325 | + |
7327 | + } | 7326 | + } |
7328 | + | 7327 | + |
7329 | if (filp) { | 7328 | if (filp || (flags & MAP_SHARED)) |
7330 | - addr = get_shared_area(filp->f_mapping, addr, len, pgoff); | 7329 | - addr = get_shared_area(filp, addr, len, pgoff); |
7331 | + addr = get_shared_area(filp, filp->f_mapping, addr, len, pgoff, flags); | 7330 | + addr = get_shared_area(filp, addr, len, pgoff, flags); |
7332 | } else if(flags & MAP_SHARED) { | 7331 | else |
7333 | - addr = get_shared_area(NULL, addr, len, pgoff); | ||
7334 | + addr = get_shared_area(filp, NULL, addr, len, pgoff, flags); | ||
7335 | } else { | ||
7336 | - addr = get_unshared_area(addr, len); | 7332 | - addr = get_unshared_area(addr, len); |
7337 | + addr = get_unshared_area(filp, addr, len, flags); | 7333 | + addr = get_unshared_area(addr, len, flags); |
7338 | } | 7334 | |
7339 | return addr; | 7335 | return addr; |
7340 | } | 7336 | } |
7341 | diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c | 7337 | diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c |
@@ -7695,7 +7691,7 @@ index 88693ce..ac6f9ab 100644 | |||
7695 | #include <asm-generic/getorder.h> | 7691 | #include <asm-generic/getorder.h> |
7696 | 7692 | ||
7697 | diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h | 7693 | diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h |
7698 | index b66ae72..4a378cd 100644 | 7694 | index 64aaf01..7ea1463 100644 |
7699 | --- a/arch/powerpc/include/asm/pgalloc-64.h | 7695 | --- a/arch/powerpc/include/asm/pgalloc-64.h |
7700 | +++ b/arch/powerpc/include/asm/pgalloc-64.h | 7696 | +++ b/arch/powerpc/include/asm/pgalloc-64.h |
7701 | @@ -53,6 +53,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) | 7697 | @@ -53,6 +53,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) |
@@ -7718,7 +7714,7 @@ index b66ae72..4a378cd 100644 | |||
7718 | #define pmd_populate(mm, pmd, pte_page) \ | 7714 | #define pmd_populate(mm, pmd, pte_page) \ |
7719 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) | 7715 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) |
7720 | #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, (unsigned long)(pte)) | 7716 | #define pmd_populate_kernel(mm, pmd, pte) pmd_set(pmd, (unsigned long)(pte)) |
7721 | @@ -171,6 +177,7 @@ extern void __tlb_remove_table(void *_table); | 7717 | @@ -169,6 +175,7 @@ extern void __tlb_remove_table(void *_table); |
7722 | #endif | 7718 | #endif |
7723 | 7719 | ||
7724 | #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd) | 7720 | #define pud_populate(mm, pud, pmd) pud_set(pud, (unsigned long)pmd) |
@@ -11841,10 +11837,10 @@ index c198b7e..63eea60 100644 | |||
11841 | This option helps catch unintended modifications to loadable | 11837 | This option helps catch unintended modifications to loadable |
11842 | kernel module's text and read-only data. It also prevents execution | 11838 | kernel module's text and read-only data. It also prevents execution |
11843 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile | 11839 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile |
11844 | index 5c47726..8c4fa67 100644 | 11840 | index 412189d..bcbad06 100644 |
11845 | --- a/arch/x86/Makefile | 11841 | --- a/arch/x86/Makefile |
11846 | +++ b/arch/x86/Makefile | 11842 | +++ b/arch/x86/Makefile |
11847 | @@ -54,6 +54,7 @@ else | 11843 | @@ -57,6 +57,7 @@ else |
11848 | UTS_MACHINE := x86_64 | 11844 | UTS_MACHINE := x86_64 |
11849 | CHECKFLAGS += -D__x86_64__ -m64 | 11845 | CHECKFLAGS += -D__x86_64__ -m64 |
11850 | 11846 | ||
@@ -11852,7 +11848,7 @@ index 5c47726..8c4fa67 100644 | |||
11852 | KBUILD_AFLAGS += -m64 | 11848 | KBUILD_AFLAGS += -m64 |
11853 | KBUILD_CFLAGS += -m64 | 11849 | KBUILD_CFLAGS += -m64 |
11854 | 11850 | ||
11855 | @@ -234,3 +235,12 @@ define archhelp | 11851 | @@ -240,3 +241,12 @@ define archhelp |
11856 | echo ' FDARGS="..." arguments for the booted kernel' | 11852 | echo ' FDARGS="..." arguments for the booted kernel' |
11857 | echo ' FDINITRD=file initrd for the booted kernel' | 11853 | echo ' FDINITRD=file initrd for the booted kernel' |
11858 | endef | 11854 | endef |
@@ -11866,13 +11862,13 @@ index 5c47726..8c4fa67 100644 | |||
11866 | +archprepare: | 11862 | +archprepare: |
11867 | + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD))) | 11863 | + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD))) |
11868 | diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile | 11864 | diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile |
11869 | index 379814b..add62ce 100644 | 11865 | index 6cf0111..f2e2398 100644 |
11870 | --- a/arch/x86/boot/Makefile | 11866 | --- a/arch/x86/boot/Makefile |
11871 | +++ b/arch/x86/boot/Makefile | 11867 | +++ b/arch/x86/boot/Makefile |
11872 | @@ -65,6 +65,9 @@ KBUILD_CFLAGS := $(USERINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \ | 11868 | @@ -65,6 +65,9 @@ KBUILD_CFLAGS := $(USERINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ \ |
11869 | $(call cc-option, -fno-unit-at-a-time)) \ | ||
11873 | $(call cc-option, -fno-stack-protector) \ | 11870 | $(call cc-option, -fno-stack-protector) \ |
11874 | $(call cc-option, -mpreferred-stack-boundary=2) | 11871 | $(call cc-option, -mpreferred-stack-boundary=2) |
11875 | KBUILD_CFLAGS += $(call cc-option, -m32) | ||
11876 | +ifdef CONSTIFY_PLUGIN | 11872 | +ifdef CONSTIFY_PLUGIN |
11877 | +KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify | 11873 | +KBUILD_CFLAGS += -fplugin-arg-constify_plugin-no-constify |
11878 | +endif | 11874 | +endif |
@@ -11924,11 +11920,11 @@ index 5b75319..331a4ca 100644 | |||
11924 | return diff; | 11920 | return diff; |
11925 | } | 11921 | } |
11926 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile | 11922 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile |
11927 | index 5ef205c..342191d 100644 | 11923 | index 7194d9f..0ad497c 100644 |
11928 | --- a/arch/x86/boot/compressed/Makefile | 11924 | --- a/arch/x86/boot/compressed/Makefile |
11929 | +++ b/arch/x86/boot/compressed/Makefile | 11925 | +++ b/arch/x86/boot/compressed/Makefile |
11930 | @@ -14,6 +14,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=small | 11926 | @@ -15,6 +15,9 @@ KBUILD_CFLAGS += $(cflags-y) |
11931 | KBUILD_CFLAGS += $(cflags-y) | 11927 | KBUILD_CFLAGS += -mno-mmx -mno-sse |
11932 | KBUILD_CFLAGS += $(call cc-option,-ffreestanding) | 11928 | KBUILD_CFLAGS += $(call cc-option,-ffreestanding) |
11933 | KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) | 11929 | KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) |
11934 | +ifdef CONSTIFY_PLUGIN | 11930 | +ifdef CONSTIFY_PLUGIN |
@@ -26883,7 +26879,7 @@ index 5484d54..d5f90d0 100644 | |||
26883 | case 1: \ | 26879 | case 1: \ |
26884 | ____emulate_2op(ctxt,_op,_bx,_by,"b",u8); \ | 26880 | ____emulate_2op(ctxt,_op,_bx,_by,"b",u8); \ |
26885 | diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c | 26881 | diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c |
26886 | index 0eee2c8..94a32c3 100644 | 26882 | index 0987c63..412bedd 100644 |
26887 | --- a/arch/x86/kvm/lapic.c | 26883 | --- a/arch/x86/kvm/lapic.c |
26888 | +++ b/arch/x86/kvm/lapic.c | 26884 | +++ b/arch/x86/kvm/lapic.c |
26889 | @@ -55,7 +55,7 @@ | 26885 | @@ -55,7 +55,7 @@ |
@@ -27087,7 +27083,7 @@ index 5402c94..c3bdeee 100644 | |||
27087 | 27083 | ||
27088 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | 27084 | vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) |
27089 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | 27085 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c |
27090 | index e8ba99c..ee9d7d9 100644 | 27086 | index ad6a016..16ec1e1 100644 |
27091 | --- a/arch/x86/kvm/x86.c | 27087 | --- a/arch/x86/kvm/x86.c |
27092 | +++ b/arch/x86/kvm/x86.c | 27088 | +++ b/arch/x86/kvm/x86.c |
27093 | @@ -1725,8 +1725,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) | 27089 | @@ -1725,8 +1725,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data) |
@@ -27110,7 +27106,7 @@ index e8ba99c..ee9d7d9 100644 | |||
27110 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, | 27106 | if (copy_to_user(user_msr_list->indices, &msrs_to_save, |
27111 | num_msrs_to_save * sizeof(u32))) | 27107 | num_msrs_to_save * sizeof(u32))) |
27112 | goto out; | 27108 | goto out; |
27113 | @@ -5297,7 +5299,7 @@ static struct notifier_block pvclock_gtod_notifier = { | 27109 | @@ -5296,7 +5298,7 @@ static struct notifier_block pvclock_gtod_notifier = { |
27114 | }; | 27110 | }; |
27115 | #endif | 27111 | #endif |
27116 | 27112 | ||
@@ -33804,11 +33800,11 @@ index a44f457..9140171 100644 | |||
33804 | #endif | 33800 | #endif |
33805 | } | 33801 | } |
33806 | diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile | 33802 | diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile |
33807 | index 8869287..d577672 100644 | 33803 | index 9cac825..4890b25 100644 |
33808 | --- a/arch/x86/realmode/rm/Makefile | 33804 | --- a/arch/x86/realmode/rm/Makefile |
33809 | +++ b/arch/x86/realmode/rm/Makefile | 33805 | +++ b/arch/x86/realmode/rm/Makefile |
33810 | @@ -78,5 +78,8 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ -D_WAKEUP \ | 33806 | @@ -79,5 +79,8 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ -D_WAKEUP \ |
33811 | $(call cc-option, -fno-unit-at-a-time)) \ | 33807 | $(call cc-option, -fno-unit-at-a-time)) \ |
33812 | $(call cc-option, -fno-stack-protector) \ | 33808 | $(call cc-option, -fno-stack-protector) \ |
33813 | $(call cc-option, -mpreferred-stack-boundary=2) | 33809 | $(call cc-option, -mpreferred-stack-boundary=2) |
33814 | +ifdef CONSTIFY_PLUGIN | 33810 | +ifdef CONSTIFY_PLUGIN |
@@ -35196,10 +35192,10 @@ index cd6aa28..6f5e966 100644 | |||
35196 | 35192 | ||
35197 | /* Create associated sysfs transport objects */ | 35193 | /* Create associated sysfs transport objects */ |
35198 | diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c | 35194 | diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c |
35199 | index 0101af5..c70c325 100644 | 35195 | index 4abdbdf..b7a724e 100644 |
35200 | --- a/drivers/ata/libata-scsi.c | 35196 | --- a/drivers/ata/libata-scsi.c |
35201 | +++ b/drivers/ata/libata-scsi.c | 35197 | +++ b/drivers/ata/libata-scsi.c |
35202 | @@ -4105,7 +4105,7 @@ int ata_sas_port_init(struct ata_port *ap) | 35198 | @@ -4106,7 +4106,7 @@ int ata_sas_port_init(struct ata_port *ap) |
35203 | 35199 | ||
35204 | if (rc) | 35200 | if (rc) |
35205 | return rc; | 35201 | return rc; |
@@ -38999,7 +38995,7 @@ index c8d16a6..ca71b5e 100644 | |||
38999 | iir = I915_READ(IIR); | 38995 | iir = I915_READ(IIR); |
39000 | 38996 | ||
39001 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | 38997 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
39002 | index c714d4d..665732e 100644 | 38998 | index f1e6004..d0200ac 100644 |
39003 | --- a/drivers/gpu/drm/i915/intel_display.c | 38999 | --- a/drivers/gpu/drm/i915/intel_display.c |
39004 | +++ b/drivers/gpu/drm/i915/intel_display.c | 39000 | +++ b/drivers/gpu/drm/i915/intel_display.c |
39005 | @@ -8939,13 +8939,13 @@ struct intel_quirk { | 39001 | @@ -8939,13 +8939,13 @@ struct intel_quirk { |
@@ -41264,10 +41260,10 @@ index 04c69af..5f92d00 100644 | |||
41264 | #include <linux/input.h> | 41260 | #include <linux/input.h> |
41265 | #include <linux/gameport.h> | 41261 | #include <linux/gameport.h> |
41266 | diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c | 41262 | diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c |
41267 | index fa061d4..4a6957c 100644 | 41263 | index 75e3b10..fb390fd 100644 |
41268 | --- a/drivers/input/joystick/xpad.c | 41264 | --- a/drivers/input/joystick/xpad.c |
41269 | +++ b/drivers/input/joystick/xpad.c | 41265 | +++ b/drivers/input/joystick/xpad.c |
41270 | @@ -735,7 +735,7 @@ static void xpad_led_set(struct led_classdev *led_cdev, | 41266 | @@ -736,7 +736,7 @@ static void xpad_led_set(struct led_classdev *led_cdev, |
41271 | 41267 | ||
41272 | static int xpad_led_probe(struct usb_xpad *xpad) | 41268 | static int xpad_led_probe(struct usb_xpad *xpad) |
41273 | { | 41269 | { |
@@ -41276,7 +41272,7 @@ index fa061d4..4a6957c 100644 | |||
41276 | long led_no; | 41272 | long led_no; |
41277 | struct xpad_led *led; | 41273 | struct xpad_led *led; |
41278 | struct led_classdev *led_cdev; | 41274 | struct led_classdev *led_cdev; |
41279 | @@ -748,7 +748,7 @@ static int xpad_led_probe(struct usb_xpad *xpad) | 41275 | @@ -749,7 +749,7 @@ static int xpad_led_probe(struct usb_xpad *xpad) |
41280 | if (!led) | 41276 | if (!led) |
41281 | return -ENOMEM; | 41277 | return -ENOMEM; |
41282 | 41278 | ||
@@ -42001,10 +41997,10 @@ index d907ca6..cfb8384 100644 | |||
42001 | schedule_work(&sc->trigger_event); | 41997 | schedule_work(&sc->trigger_event); |
42002 | } | 41998 | } |
42003 | diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c | 41999 | diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c |
42004 | index 9e3a045..9d0f95b 100644 | 42000 | index bd88d3da..b754a8b 100644 |
42005 | --- a/drivers/md/dm-table.c | 42001 | --- a/drivers/md/dm-table.c |
42006 | +++ b/drivers/md/dm-table.c | 42002 | +++ b/drivers/md/dm-table.c |
42007 | @@ -389,7 +389,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, | 42003 | @@ -394,7 +394,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, |
42008 | if (!dev_size) | 42004 | if (!dev_size) |
42009 | return 0; | 42005 | return 0; |
42010 | 42006 | ||
@@ -45934,7 +45930,7 @@ index 8c05ae01..b2cf224 100644 | |||
45934 | error = bus_register(&fcoe_bus_type); | 45930 | error = bus_register(&fcoe_bus_type); |
45935 | if (error) | 45931 | if (error) |
45936 | diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c | 45932 | diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c |
45937 | index df0c3c7..b00e1d0 100644 | 45933 | index 3cafe0d..f1e87f8 100644 |
45938 | --- a/drivers/scsi/hosts.c | 45934 | --- a/drivers/scsi/hosts.c |
45939 | +++ b/drivers/scsi/hosts.c | 45935 | +++ b/drivers/scsi/hosts.c |
45940 | @@ -42,7 +42,7 @@ | 45936 | @@ -42,7 +42,7 @@ |
@@ -45956,10 +45952,10 @@ index df0c3c7..b00e1d0 100644 | |||
45956 | 45952 | ||
45957 | /* These three are default values which can be overridden */ | 45953 | /* These three are default values which can be overridden */ |
45958 | diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c | 45954 | diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c |
45959 | index 7f4f790..b75b92a 100644 | 45955 | index 0353d7f..be4e66b 100644 |
45960 | --- a/drivers/scsi/hpsa.c | 45956 | --- a/drivers/scsi/hpsa.c |
45961 | +++ b/drivers/scsi/hpsa.c | 45957 | +++ b/drivers/scsi/hpsa.c |
45962 | @@ -554,7 +554,7 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) | 45958 | @@ -555,7 +555,7 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) |
45963 | unsigned long flags; | 45959 | unsigned long flags; |
45964 | 45960 | ||
45965 | if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant))) | 45961 | if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant))) |
@@ -45968,7 +45964,7 @@ index 7f4f790..b75b92a 100644 | |||
45968 | 45964 | ||
45969 | if ((rq->head[rq->current_entry] & 1) == rq->wraparound) { | 45965 | if ((rq->head[rq->current_entry] & 1) == rq->wraparound) { |
45970 | a = rq->head[rq->current_entry]; | 45966 | a = rq->head[rq->current_entry]; |
45971 | @@ -3422,7 +3422,7 @@ static void start_io(struct ctlr_info *h) | 45967 | @@ -3423,7 +3423,7 @@ static void start_io(struct ctlr_info *h) |
45972 | while (!list_empty(&h->reqQ)) { | 45968 | while (!list_empty(&h->reqQ)) { |
45973 | c = list_entry(h->reqQ.next, struct CommandList, list); | 45969 | c = list_entry(h->reqQ.next, struct CommandList, list); |
45974 | /* can't do anything if fifo is full */ | 45970 | /* can't do anything if fifo is full */ |
@@ -45977,7 +45973,7 @@ index 7f4f790..b75b92a 100644 | |||
45977 | dev_warn(&h->pdev->dev, "fifo full\n"); | 45973 | dev_warn(&h->pdev->dev, "fifo full\n"); |
45978 | break; | 45974 | break; |
45979 | } | 45975 | } |
45980 | @@ -3444,7 +3444,7 @@ static void start_io(struct ctlr_info *h) | 45976 | @@ -3445,7 +3445,7 @@ static void start_io(struct ctlr_info *h) |
45981 | 45977 | ||
45982 | /* Tell the controller execute command */ | 45978 | /* Tell the controller execute command */ |
45983 | spin_unlock_irqrestore(&h->lock, flags); | 45979 | spin_unlock_irqrestore(&h->lock, flags); |
@@ -45986,7 +45982,7 @@ index 7f4f790..b75b92a 100644 | |||
45986 | spin_lock_irqsave(&h->lock, flags); | 45982 | spin_lock_irqsave(&h->lock, flags); |
45987 | } | 45983 | } |
45988 | spin_unlock_irqrestore(&h->lock, flags); | 45984 | spin_unlock_irqrestore(&h->lock, flags); |
45989 | @@ -3452,17 +3452,17 @@ static void start_io(struct ctlr_info *h) | 45985 | @@ -3453,17 +3453,17 @@ static void start_io(struct ctlr_info *h) |
45990 | 45986 | ||
45991 | static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q) | 45987 | static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q) |
45992 | { | 45988 | { |
@@ -46007,7 +46003,7 @@ index 7f4f790..b75b92a 100644 | |||
46007 | (h->interrupts_enabled == 0); | 46003 | (h->interrupts_enabled == 0); |
46008 | } | 46004 | } |
46009 | 46005 | ||
46010 | @@ -4364,7 +4364,7 @@ static int hpsa_pci_init(struct ctlr_info *h) | 46006 | @@ -4365,7 +4365,7 @@ static int hpsa_pci_init(struct ctlr_info *h) |
46011 | if (prod_index < 0) | 46007 | if (prod_index < 0) |
46012 | return -ENODEV; | 46008 | return -ENODEV; |
46013 | h->product_name = products[prod_index].product_name; | 46009 | h->product_name = products[prod_index].product_name; |
@@ -46016,7 +46012,7 @@ index 7f4f790..b75b92a 100644 | |||
46016 | 46012 | ||
46017 | pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | | 46013 | pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | |
46018 | PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); | 46014 | PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); |
46019 | @@ -4646,7 +4646,7 @@ static void controller_lockup_detected(struct ctlr_info *h) | 46015 | @@ -4647,7 +4647,7 @@ static void controller_lockup_detected(struct ctlr_info *h) |
46020 | 46016 | ||
46021 | assert_spin_locked(&lockup_detector_lock); | 46017 | assert_spin_locked(&lockup_detector_lock); |
46022 | remove_ctlr_from_lockup_detector_list(h); | 46018 | remove_ctlr_from_lockup_detector_list(h); |
@@ -46025,7 +46021,7 @@ index 7f4f790..b75b92a 100644 | |||
46025 | spin_lock_irqsave(&h->lock, flags); | 46021 | spin_lock_irqsave(&h->lock, flags); |
46026 | h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); | 46022 | h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); |
46027 | spin_unlock_irqrestore(&h->lock, flags); | 46023 | spin_unlock_irqrestore(&h->lock, flags); |
46028 | @@ -4823,7 +4823,7 @@ reinit_after_soft_reset: | 46024 | @@ -4824,7 +4824,7 @@ reinit_after_soft_reset: |
46029 | } | 46025 | } |
46030 | 46026 | ||
46031 | /* make sure the board interrupts are off */ | 46027 | /* make sure the board interrupts are off */ |
@@ -46034,7 +46030,7 @@ index 7f4f790..b75b92a 100644 | |||
46034 | 46030 | ||
46035 | if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx)) | 46031 | if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx)) |
46036 | goto clean2; | 46032 | goto clean2; |
46037 | @@ -4857,7 +4857,7 @@ reinit_after_soft_reset: | 46033 | @@ -4858,7 +4858,7 @@ reinit_after_soft_reset: |
46038 | * fake ones to scoop up any residual completions. | 46034 | * fake ones to scoop up any residual completions. |
46039 | */ | 46035 | */ |
46040 | spin_lock_irqsave(&h->lock, flags); | 46036 | spin_lock_irqsave(&h->lock, flags); |
@@ -46043,7 +46039,7 @@ index 7f4f790..b75b92a 100644 | |||
46043 | spin_unlock_irqrestore(&h->lock, flags); | 46039 | spin_unlock_irqrestore(&h->lock, flags); |
46044 | free_irqs(h); | 46040 | free_irqs(h); |
46045 | rc = hpsa_request_irq(h, hpsa_msix_discard_completions, | 46041 | rc = hpsa_request_irq(h, hpsa_msix_discard_completions, |
46046 | @@ -4876,9 +4876,9 @@ reinit_after_soft_reset: | 46042 | @@ -4877,9 +4877,9 @@ reinit_after_soft_reset: |
46047 | dev_info(&h->pdev->dev, "Board READY.\n"); | 46043 | dev_info(&h->pdev->dev, "Board READY.\n"); |
46048 | dev_info(&h->pdev->dev, | 46044 | dev_info(&h->pdev->dev, |
46049 | "Waiting for stale completions to drain.\n"); | 46045 | "Waiting for stale completions to drain.\n"); |
@@ -46055,7 +46051,7 @@ index 7f4f790..b75b92a 100644 | |||
46055 | 46051 | ||
46056 | rc = controller_reset_failed(h->cfgtable); | 46052 | rc = controller_reset_failed(h->cfgtable); |
46057 | if (rc) | 46053 | if (rc) |
46058 | @@ -4899,7 +4899,7 @@ reinit_after_soft_reset: | 46054 | @@ -4900,7 +4900,7 @@ reinit_after_soft_reset: |
46059 | } | 46055 | } |
46060 | 46056 | ||
46061 | /* Turn the interrupts on so we can service requests */ | 46057 | /* Turn the interrupts on so we can service requests */ |
@@ -46064,7 +46060,7 @@ index 7f4f790..b75b92a 100644 | |||
46064 | 46060 | ||
46065 | hpsa_hba_inquiry(h); | 46061 | hpsa_hba_inquiry(h); |
46066 | hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */ | 46062 | hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */ |
46067 | @@ -4954,7 +4954,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) | 46063 | @@ -4955,7 +4955,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) |
46068 | * To write all data in the battery backed cache to disks | 46064 | * To write all data in the battery backed cache to disks |
46069 | */ | 46065 | */ |
46070 | hpsa_flush_cache(h); | 46066 | hpsa_flush_cache(h); |
@@ -46073,7 +46069,7 @@ index 7f4f790..b75b92a 100644 | |||
46073 | hpsa_free_irqs_and_disable_msix(h); | 46069 | hpsa_free_irqs_and_disable_msix(h); |
46074 | } | 46070 | } |
46075 | 46071 | ||
46076 | @@ -5122,7 +5122,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 use_short_tags) | 46072 | @@ -5123,7 +5123,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 use_short_tags) |
46077 | return; | 46073 | return; |
46078 | } | 46074 | } |
46079 | /* Change the access methods to the performant access methods */ | 46075 | /* Change the access methods to the performant access methods */ |
@@ -46241,7 +46237,7 @@ index 8b928c6..9c76300 100644 | |||
46241 | } | 46237 | } |
46242 | EXPORT_SYMBOL(fc_exch_update_stats); | 46238 | EXPORT_SYMBOL(fc_exch_update_stats); |
46243 | diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c | 46239 | diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c |
46244 | index 161c98e..6d563b3 100644 | 46240 | index d289583..b745eec 100644 |
46245 | --- a/drivers/scsi/libsas/sas_ata.c | 46241 | --- a/drivers/scsi/libsas/sas_ata.c |
46246 | +++ b/drivers/scsi/libsas/sas_ata.c | 46242 | +++ b/drivers/scsi/libsas/sas_ata.c |
46247 | @@ -554,7 +554,7 @@ static struct ata_port_operations sas_sata_ops = { | 46243 | @@ -554,7 +554,7 @@ static struct ata_port_operations sas_sata_ops = { |
@@ -46442,7 +46438,7 @@ index 8523b278e..ce1d812 100644 | |||
46442 | 46438 | ||
46443 | /** | 46439 | /** |
46444 | diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c | 46440 | diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c |
46445 | index 8e1b737..50ff510 100644 | 46441 | index bfb72ec..2cdcb0e 100644 |
46446 | --- a/drivers/scsi/pmcraid.c | 46442 | --- a/drivers/scsi/pmcraid.c |
46447 | +++ b/drivers/scsi/pmcraid.c | 46443 | +++ b/drivers/scsi/pmcraid.c |
46448 | @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev) | 46444 | @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev) |
@@ -46486,7 +46482,7 @@ index 8e1b737..50ff510 100644 | |||
46486 | pinstance->num_hrrq; | 46482 | pinstance->num_hrrq; |
46487 | 46483 | ||
46488 | if (request_size) { | 46484 | if (request_size) { |
46489 | @@ -4483,7 +4483,7 @@ static void pmcraid_worker_function(struct work_struct *workp) | 46485 | @@ -4484,7 +4484,7 @@ static void pmcraid_worker_function(struct work_struct *workp) |
46490 | 46486 | ||
46491 | pinstance = container_of(workp, struct pmcraid_instance, worker_q); | 46487 | pinstance = container_of(workp, struct pmcraid_instance, worker_q); |
46492 | /* add resources only after host is added into system */ | 46488 | /* add resources only after host is added into system */ |
@@ -46495,7 +46491,7 @@ index 8e1b737..50ff510 100644 | |||
46495 | return; | 46491 | return; |
46496 | 46492 | ||
46497 | fw_version = be16_to_cpu(pinstance->inq_data->fw_version); | 46493 | fw_version = be16_to_cpu(pinstance->inq_data->fw_version); |
46498 | @@ -5310,8 +5310,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host, | 46494 | @@ -5311,8 +5311,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host, |
46499 | init_waitqueue_head(&pinstance->reset_wait_q); | 46495 | init_waitqueue_head(&pinstance->reset_wait_q); |
46500 | 46496 | ||
46501 | atomic_set(&pinstance->outstanding_cmds, 0); | 46497 | atomic_set(&pinstance->outstanding_cmds, 0); |
@@ -46506,7 +46502,7 @@ index 8e1b737..50ff510 100644 | |||
46506 | 46502 | ||
46507 | INIT_LIST_HEAD(&pinstance->free_res_q); | 46503 | INIT_LIST_HEAD(&pinstance->free_res_q); |
46508 | INIT_LIST_HEAD(&pinstance->used_res_q); | 46504 | INIT_LIST_HEAD(&pinstance->used_res_q); |
46509 | @@ -6024,7 +6024,7 @@ static int pmcraid_probe(struct pci_dev *pdev, | 46505 | @@ -6025,7 +6025,7 @@ static int pmcraid_probe(struct pci_dev *pdev, |
46510 | /* Schedule worker thread to handle CCN and take care of adding and | 46506 | /* Schedule worker thread to handle CCN and take care of adding and |
46511 | * removing devices to OS | 46507 | * removing devices to OS |
46512 | */ | 46508 | */ |
@@ -46810,10 +46806,10 @@ index f379c7f..e8fc69c 100644 | |||
46810 | 46806 | ||
46811 | transport_setup_device(&rport->dev); | 46807 | transport_setup_device(&rport->dev); |
46812 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c | 46808 | diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c |
46813 | index 734a29a..6b06e4a 100644 | 46809 | index 9bc913b..1b49616 100644 |
46814 | --- a/drivers/scsi/sd.c | 46810 | --- a/drivers/scsi/sd.c |
46815 | +++ b/drivers/scsi/sd.c | 46811 | +++ b/drivers/scsi/sd.c |
46816 | @@ -2923,7 +2923,7 @@ static int sd_probe(struct device *dev) | 46812 | @@ -2929,7 +2929,7 @@ static int sd_probe(struct device *dev) |
46817 | sdkp->disk = gd; | 46813 | sdkp->disk = gd; |
46818 | sdkp->index = index; | 46814 | sdkp->index = index; |
46819 | atomic_set(&sdkp->openers, 0); | 46815 | atomic_set(&sdkp->openers, 0); |
@@ -46822,7 +46818,7 @@ index 734a29a..6b06e4a 100644 | |||
46822 | 46818 | ||
46823 | if (!sdp->request_queue->rq_timeout) { | 46819 | if (!sdp->request_queue->rq_timeout) { |
46824 | if (sdp->type != TYPE_MOD) | 46820 | if (sdp->type != TYPE_MOD) |
46825 | @@ -2936,7 +2936,7 @@ static int sd_probe(struct device *dev) | 46821 | @@ -2942,7 +2942,7 @@ static int sd_probe(struct device *dev) |
46826 | device_initialize(&sdkp->dev); | 46822 | device_initialize(&sdkp->dev); |
46827 | sdkp->dev.parent = dev; | 46823 | sdkp->dev.parent = dev; |
46828 | sdkp->dev.class = &sd_disk_class; | 46824 | sdkp->dev.class = &sd_disk_class; |
@@ -48742,7 +48738,7 @@ index d3aa353..0e284af 100644 | |||
48742 | wake_up(&usb_kill_urb_queue); | 48738 | wake_up(&usb_kill_urb_queue); |
48743 | usb_put_urb(urb); | 48739 | usb_put_urb(urb); |
48744 | diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c | 48740 | diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c |
48745 | index 1424a89..62da951 100644 | 48741 | index 4d25bff2..56537dd 100644 |
48746 | --- a/drivers/usb/core/hub.c | 48742 | --- a/drivers/usb/core/hub.c |
48747 | +++ b/drivers/usb/core/hub.c | 48743 | +++ b/drivers/usb/core/hub.c |
48748 | @@ -27,6 +27,7 @@ | 48744 | @@ -27,6 +27,7 @@ |
@@ -48804,7 +48800,7 @@ index b10da72..43aa0b2 100644 | |||
48804 | INIT_LIST_HEAD(&dev->ep0.urb_list); | 48800 | INIT_LIST_HEAD(&dev->ep0.urb_list); |
48805 | dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; | 48801 | dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; |
48806 | diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c | 48802 | diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c |
48807 | index 14d28d6..5f511ac 100644 | 48803 | index 69948ad..0ad5f87 100644 |
48808 | --- a/drivers/usb/dwc3/gadget.c | 48804 | --- a/drivers/usb/dwc3/gadget.c |
48809 | +++ b/drivers/usb/dwc3/gadget.c | 48805 | +++ b/drivers/usb/dwc3/gadget.c |
48810 | @@ -550,8 +550,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, | 48806 | @@ -550,8 +550,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, |
@@ -53881,10 +53877,10 @@ index 1d5c5f7..0ba0afc 100644 | |||
53881 | spin_lock_init(&delayed_root->lock); | 53877 | spin_lock_init(&delayed_root->lock); |
53882 | init_waitqueue_head(&delayed_root->wait); | 53878 | init_waitqueue_head(&delayed_root->wait); |
53883 | diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c | 53879 | diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c |
53884 | index 8dedf40..1a83977 100644 | 53880 | index 145b2c7..7673563 100644 |
53885 | --- a/fs/btrfs/ioctl.c | 53881 | --- a/fs/btrfs/ioctl.c |
53886 | +++ b/fs/btrfs/ioctl.c | 53882 | +++ b/fs/btrfs/ioctl.c |
53887 | @@ -3084,9 +3084,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | 53883 | @@ -3085,9 +3085,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) |
53888 | for (i = 0; i < num_types; i++) { | 53884 | for (i = 0; i < num_types; i++) { |
53889 | struct btrfs_space_info *tmp; | 53885 | struct btrfs_space_info *tmp; |
53890 | 53886 | ||
@@ -53897,7 +53893,7 @@ index 8dedf40..1a83977 100644 | |||
53897 | info = NULL; | 53893 | info = NULL; |
53898 | rcu_read_lock(); | 53894 | rcu_read_lock(); |
53899 | list_for_each_entry_rcu(tmp, &root->fs_info->space_info, | 53895 | list_for_each_entry_rcu(tmp, &root->fs_info->space_info, |
53900 | @@ -3108,10 +3111,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | 53896 | @@ -3109,10 +3112,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) |
53901 | memcpy(dest, &space, sizeof(space)); | 53897 | memcpy(dest, &space, sizeof(space)); |
53902 | dest++; | 53898 | dest++; |
53903 | space_args.total_spaces++; | 53899 | space_args.total_spaces++; |
@@ -58707,10 +58703,10 @@ index 582321a..0224663 100644 | |||
58707 | }; | 58703 | }; |
58708 | 58704 | ||
58709 | diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c | 58705 | diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c |
58710 | index e76244e..9fe8f2f1 100644 | 58706 | index ec8d97d..3a01bcf 100644 |
58711 | --- a/fs/nfsd/nfscache.c | 58707 | --- a/fs/nfsd/nfscache.c |
58712 | +++ b/fs/nfsd/nfscache.c | 58708 | +++ b/fs/nfsd/nfscache.c |
58713 | @@ -526,14 +526,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) | 58709 | @@ -533,14 +533,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) |
58714 | { | 58710 | { |
58715 | struct svc_cacherep *rp = rqstp->rq_cacherep; | 58711 | struct svc_cacherep *rp = rqstp->rq_cacherep; |
58716 | struct kvec *resv = &rqstp->rq_res.head[0], *cachv; | 58712 | struct kvec *resv = &rqstp->rq_res.head[0], *cachv; |
@@ -59431,7 +59427,7 @@ index 8c74100..4239c48 100644 | |||
59431 | } | 59427 | } |
59432 | putname(tmp); | 59428 | putname(tmp); |
59433 | diff --git a/fs/pipe.c b/fs/pipe.c | 59429 | diff --git a/fs/pipe.c b/fs/pipe.c |
59434 | index d2c45e1..009fe1c 100644 | 59430 | index 0e0752e..7cfdd50 100644 |
59435 | --- a/fs/pipe.c | 59431 | --- a/fs/pipe.c |
59436 | +++ b/fs/pipe.c | 59432 | +++ b/fs/pipe.c |
59437 | @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; | 59433 | @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; |
@@ -59512,7 +59508,16 @@ index d2c45e1..009fe1c 100644 | |||
59512 | mask |= POLLERR; | 59508 | mask |= POLLERR; |
59513 | } | 59509 | } |
59514 | 59510 | ||
59515 | @@ -734,17 +734,17 @@ pipe_release(struct inode *inode, struct file *file) | 59511 | @@ -731,7 +731,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe) |
59512 | int kill = 0; | ||
59513 | |||
59514 | spin_lock(&inode->i_lock); | ||
59515 | - if (!--pipe->files) { | ||
59516 | + if (atomic_dec_and_test(&pipe->files)) { | ||
59517 | inode->i_pipe = NULL; | ||
59518 | kill = 1; | ||
59519 | } | ||
59520 | @@ -748,11 +748,11 @@ pipe_release(struct inode *inode, struct file *file) | ||
59516 | 59521 | ||
59517 | __pipe_lock(pipe); | 59522 | __pipe_lock(pipe); |
59518 | if (file->f_mode & FMODE_READ) | 59523 | if (file->f_mode & FMODE_READ) |
@@ -59527,14 +59532,7 @@ index d2c45e1..009fe1c 100644 | |||
59527 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); | 59532 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); |
59528 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 59533 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
59529 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 59534 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
59530 | } | 59535 | @@ -817,7 +817,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) |
59531 | spin_lock(&inode->i_lock); | ||
59532 | - if (!--pipe->files) { | ||
59533 | + if (atomic_dec_and_test(&pipe->files)) { | ||
59534 | inode->i_pipe = NULL; | ||
59535 | kill = 1; | ||
59536 | } | ||
59537 | @@ -811,7 +811,7 @@ void free_pipe_info(struct pipe_inode_info *pipe) | ||
59538 | kfree(pipe); | 59536 | kfree(pipe); |
59539 | } | 59537 | } |
59540 | 59538 | ||
@@ -59543,7 +59541,7 @@ index d2c45e1..009fe1c 100644 | |||
59543 | 59541 | ||
59544 | /* | 59542 | /* |
59545 | * pipefs_dname() is called from d_path(). | 59543 | * pipefs_dname() is called from d_path(). |
59546 | @@ -841,8 +841,9 @@ static struct inode * get_pipe_inode(void) | 59544 | @@ -847,8 +847,9 @@ static struct inode * get_pipe_inode(void) |
59547 | goto fail_iput; | 59545 | goto fail_iput; |
59548 | 59546 | ||
59549 | inode->i_pipe = pipe; | 59547 | inode->i_pipe = pipe; |
@@ -59555,7 +59553,7 @@ index d2c45e1..009fe1c 100644 | |||
59555 | inode->i_fop = &pipefifo_fops; | 59553 | inode->i_fop = &pipefifo_fops; |
59556 | 59554 | ||
59557 | /* | 59555 | /* |
59558 | @@ -1022,17 +1023,17 @@ static int fifo_open(struct inode *inode, struct file *filp) | 59556 | @@ -1027,17 +1028,17 @@ static int fifo_open(struct inode *inode, struct file *filp) |
59559 | spin_lock(&inode->i_lock); | 59557 | spin_lock(&inode->i_lock); |
59560 | if (inode->i_pipe) { | 59558 | if (inode->i_pipe) { |
59561 | pipe = inode->i_pipe; | 59559 | pipe = inode->i_pipe; |
@@ -59576,7 +59574,7 @@ index d2c45e1..009fe1c 100644 | |||
59576 | spin_unlock(&inode->i_lock); | 59574 | spin_unlock(&inode->i_lock); |
59577 | free_pipe_info(pipe); | 59575 | free_pipe_info(pipe); |
59578 | pipe = inode->i_pipe; | 59576 | pipe = inode->i_pipe; |
59579 | @@ -1057,10 +1058,10 @@ static int fifo_open(struct inode *inode, struct file *filp) | 59577 | @@ -1062,10 +1063,10 @@ static int fifo_open(struct inode *inode, struct file *filp) |
59580 | * opened, even when there is no process writing the FIFO. | 59578 | * opened, even when there is no process writing the FIFO. |
59581 | */ | 59579 | */ |
59582 | pipe->r_counter++; | 59580 | pipe->r_counter++; |
@@ -59589,7 +59587,7 @@ index d2c45e1..009fe1c 100644 | |||
59589 | if ((filp->f_flags & O_NONBLOCK)) { | 59587 | if ((filp->f_flags & O_NONBLOCK)) { |
59590 | /* suppress POLLHUP until we have | 59588 | /* suppress POLLHUP until we have |
59591 | * seen a writer */ | 59589 | * seen a writer */ |
59592 | @@ -1079,14 +1080,14 @@ static int fifo_open(struct inode *inode, struct file *filp) | 59590 | @@ -1084,14 +1085,14 @@ static int fifo_open(struct inode *inode, struct file *filp) |
59593 | * errno=ENXIO when there is no process reading the FIFO. | 59591 | * errno=ENXIO when there is no process reading the FIFO. |
59594 | */ | 59592 | */ |
59595 | ret = -ENXIO; | 59593 | ret = -ENXIO; |
@@ -59607,7 +59605,7 @@ index d2c45e1..009fe1c 100644 | |||
59607 | if (wait_for_partner(pipe, &pipe->r_counter)) | 59605 | if (wait_for_partner(pipe, &pipe->r_counter)) |
59608 | goto err_wr; | 59606 | goto err_wr; |
59609 | } | 59607 | } |
59610 | @@ -1100,11 +1101,11 @@ static int fifo_open(struct inode *inode, struct file *filp) | 59608 | @@ -1105,11 +1106,11 @@ static int fifo_open(struct inode *inode, struct file *filp) |
59611 | * the process can at least talk to itself. | 59609 | * the process can at least talk to itself. |
59612 | */ | 59610 | */ |
59613 | 59611 | ||
@@ -59622,7 +59620,7 @@ index d2c45e1..009fe1c 100644 | |||
59622 | wake_up_partner(pipe); | 59620 | wake_up_partner(pipe); |
59623 | break; | 59621 | break; |
59624 | 59622 | ||
59625 | @@ -1118,20 +1119,20 @@ static int fifo_open(struct inode *inode, struct file *filp) | 59623 | @@ -1123,13 +1124,13 @@ static int fifo_open(struct inode *inode, struct file *filp) |
59626 | return 0; | 59624 | return 0; |
59627 | 59625 | ||
59628 | err_rd: | 59626 | err_rd: |
@@ -59638,14 +59636,6 @@ index d2c45e1..009fe1c 100644 | |||
59638 | wake_up_interruptible(&pipe->wait); | 59636 | wake_up_interruptible(&pipe->wait); |
59639 | ret = -ERESTARTSYS; | 59637 | ret = -ERESTARTSYS; |
59640 | goto err; | 59638 | goto err; |
59641 | |||
59642 | err: | ||
59643 | spin_lock(&inode->i_lock); | ||
59644 | - if (!--pipe->files) { | ||
59645 | + if (atomic_dec_and_test(&pipe->files)) { | ||
59646 | inode->i_pipe = NULL; | ||
59647 | kill = 1; | ||
59648 | } | ||
59649 | diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig | 59639 | diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig |
59650 | index 15af622..0e9f4467 100644 | 59640 | index 15af622..0e9f4467 100644 |
59651 | --- a/fs/proc/Kconfig | 59641 | --- a/fs/proc/Kconfig |
@@ -61814,7 +61804,7 @@ index 6157424..ac98f6d 100644 | |||
61814 | *offset = off & 0x7fffffff; | 61804 | *offset = off & 0x7fffffff; |
61815 | return 0; | 61805 | return 0; |
61816 | diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c | 61806 | diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c |
61817 | index ca01d83..86b14a7 100644 | 61807 | index 83dfe6e..2d330c9 100644 |
61818 | --- a/fs/xfs/xfs_ioctl.c | 61808 | --- a/fs/xfs/xfs_ioctl.c |
61819 | +++ b/fs/xfs/xfs_ioctl.c | 61809 | +++ b/fs/xfs/xfs_ioctl.c |
61820 | @@ -127,7 +127,7 @@ xfs_find_handle( | 61810 | @@ -127,7 +127,7 @@ xfs_find_handle( |
@@ -81415,7 +81405,7 @@ index 80d92e9..c9ab9de 100644 | |||
81415 | else | 81405 | else |
81416 | new_fs = fs; | 81406 | new_fs = fs; |
81417 | diff --git a/kernel/futex.c b/kernel/futex.c | 81407 | diff --git a/kernel/futex.c b/kernel/futex.c |
81418 | index 49dacfb..2ac4526 100644 | 81408 | index a283b30..e35635d 100644 |
81419 | --- a/kernel/futex.c | 81409 | --- a/kernel/futex.c |
81420 | +++ b/kernel/futex.c | 81410 | +++ b/kernel/futex.c |
81421 | @@ -54,6 +54,7 @@ | 81411 | @@ -54,6 +54,7 @@ |
@@ -81713,10 +81703,10 @@ index e30ac0f..3528cac 100644 | |||
81713 | 81703 | ||
81714 | /* | 81704 | /* |
81715 | diff --git a/kernel/kexec.c b/kernel/kexec.c | 81705 | diff --git a/kernel/kexec.c b/kernel/kexec.c |
81716 | index 59f7b55..4022f65 100644 | 81706 | index 1f8d938..915c3db 100644 |
81717 | --- a/kernel/kexec.c | 81707 | --- a/kernel/kexec.c |
81718 | +++ b/kernel/kexec.c | 81708 | +++ b/kernel/kexec.c |
81719 | @@ -1041,7 +1041,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry, | 81709 | @@ -1044,7 +1044,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry, |
81720 | unsigned long flags) | 81710 | unsigned long flags) |
81721 | { | 81711 | { |
81722 | struct compat_kexec_segment in; | 81712 | struct compat_kexec_segment in; |
@@ -84423,7 +84413,7 @@ index e8b3350..d83d44e 100644 | |||
84423 | .priority = CPU_PRI_MIGRATION, | 84413 | .priority = CPU_PRI_MIGRATION, |
84424 | }; | 84414 | }; |
84425 | diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c | 84415 | diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c |
84426 | index 009a62b..ae011f8 100644 | 84416 | index da7eebb..9a71428 100644 |
84427 | --- a/kernel/sched/fair.c | 84417 | --- a/kernel/sched/fair.c |
84428 | +++ b/kernel/sched/fair.c | 84418 | +++ b/kernel/sched/fair.c |
84429 | @@ -831,7 +831,7 @@ void task_numa_fault(int node, int pages, bool migrated) | 84419 | @@ -831,7 +831,7 @@ void task_numa_fault(int node, int pages, bool migrated) |
@@ -84435,7 +84425,7 @@ index 009a62b..ae011f8 100644 | |||
84435 | p->mm->numa_scan_offset = 0; | 84425 | p->mm->numa_scan_offset = 0; |
84436 | } | 84426 | } |
84437 | 84427 | ||
84438 | @@ -5687,7 +5687,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { } | 84428 | @@ -5689,7 +5689,7 @@ static void nohz_idle_balance(int this_cpu, enum cpu_idle_type idle) { } |
84439 | * run_rebalance_domains is triggered when needed from the scheduler tick. | 84429 | * run_rebalance_domains is triggered when needed from the scheduler tick. |
84440 | * Also triggered for nohz idle balancing (with nohz_balancing_kick set). | 84430 | * Also triggered for nohz idle balancing (with nohz_balancing_kick set). |
84441 | */ | 84431 | */ |
@@ -85206,7 +85196,7 @@ index a8f5084..5a673cb 100644 | |||
85206 | .clock_get = alarm_clock_get, | 85196 | .clock_get = alarm_clock_get, |
85207 | .timer_create = alarm_timer_create, | 85197 | .timer_create = alarm_timer_create, |
85208 | diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c | 85198 | diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c |
85209 | index fcc261c..119dc3b 100644 | 85199 | index 1c5b0fc..910e6e1 100644 |
85210 | --- a/kernel/time/timekeeping.c | 85200 | --- a/kernel/time/timekeeping.c |
85211 | +++ b/kernel/time/timekeeping.c | 85201 | +++ b/kernel/time/timekeeping.c |
85212 | @@ -15,6 +15,7 @@ | 85202 | @@ -15,6 +15,7 @@ |
@@ -94341,7 +94331,7 @@ index 1f9a1a5..413e487 100644 | |||
94341 | .maxtype = IFLA_GRE_MAX, | 94331 | .maxtype = IFLA_GRE_MAX, |
94342 | .policy = ip6gre_policy, | 94332 | .policy = ip6gre_policy, |
94343 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c | 94333 | diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c |
94344 | index 0516ebb..a5f065b 100644 | 94334 | index 209bb4d..e99677d 100644 |
94345 | --- a/net/ipv6/ip6_tunnel.c | 94335 | --- a/net/ipv6/ip6_tunnel.c |
94346 | +++ b/net/ipv6/ip6_tunnel.c | 94336 | +++ b/net/ipv6/ip6_tunnel.c |
94347 | @@ -88,7 +88,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) | 94337 | @@ -88,7 +88,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2) |
@@ -94964,7 +94954,7 @@ index 66f51c5..8f0eef1 100644 | |||
94964 | return res; | 94954 | return res; |
94965 | } | 94955 | } |
94966 | diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c | 94956 | diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c |
94967 | index 5ab17b8..5b0aae4 100644 | 94957 | index 18687f1..9c492c6 100644 |
94968 | --- a/net/mac80211/cfg.c | 94958 | --- a/net/mac80211/cfg.c |
94969 | +++ b/net/mac80211/cfg.c | 94959 | +++ b/net/mac80211/cfg.c |
94970 | @@ -806,7 +806,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, | 94960 | @@ -806,7 +806,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy, |
@@ -94976,7 +94966,7 @@ index 5ab17b8..5b0aae4 100644 | |||
94976 | local->_oper_chandef = *chandef; | 94966 | local->_oper_chandef = *chandef; |
94977 | ieee80211_hw_config(local, 0); | 94967 | ieee80211_hw_config(local, 0); |
94978 | } | 94968 | } |
94979 | @@ -2922,7 +2922,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, | 94969 | @@ -2921,7 +2921,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, |
94980 | else | 94970 | else |
94981 | local->probe_req_reg--; | 94971 | local->probe_req_reg--; |
94982 | 94972 | ||
@@ -94985,7 +94975,7 @@ index 5ab17b8..5b0aae4 100644 | |||
94985 | break; | 94975 | break; |
94986 | 94976 | ||
94987 | ieee80211_queue_work(&local->hw, &local->reconfig_filter); | 94977 | ieee80211_queue_work(&local->hw, &local->reconfig_filter); |
94988 | @@ -3385,8 +3385,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, | 94978 | @@ -3384,8 +3384,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, |
94989 | if (chanctx_conf) { | 94979 | if (chanctx_conf) { |
94990 | *chandef = chanctx_conf->def; | 94980 | *chandef = chanctx_conf->def; |
94991 | ret = 0; | 94981 | ret = 0; |
@@ -99850,10 +99840,10 @@ index dad36a6..7e5ffbf 100644 | |||
99850 | lock = &avc_cache.slots_lock[hvalue]; | 99840 | lock = &avc_cache.slots_lock[hvalue]; |
99851 | 99841 | ||
99852 | diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c | 99842 | diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c |
99853 | index 5c6f2cd..b4f945c 100644 | 99843 | index 5e58d7d..98eef77 100644 |
99854 | --- a/security/selinux/hooks.c | 99844 | --- a/security/selinux/hooks.c |
99855 | +++ b/security/selinux/hooks.c | 99845 | +++ b/security/selinux/hooks.c |
99856 | @@ -96,8 +96,6 @@ | 99846 | @@ -97,8 +97,6 @@ |
99857 | 99847 | ||
99858 | #define NUM_SEL_MNT_OPTS 5 | 99848 | #define NUM_SEL_MNT_OPTS 5 |
99859 | 99849 | ||
@@ -99862,7 +99852,7 @@ index 5c6f2cd..b4f945c 100644 | |||
99862 | /* SECMARK reference count */ | 99852 | /* SECMARK reference count */ |
99863 | static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0); | 99853 | static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0); |
99864 | 99854 | ||
99865 | @@ -5529,7 +5527,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) | 99855 | @@ -5588,7 +5586,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer) |
99866 | 99856 | ||
99867 | #endif | 99857 | #endif |
99868 | 99858 | ||
@@ -111787,7 +111777,7 @@ index 96b919d..c49bb74 100644 | |||
111787 | + | 111777 | + |
111788 | #endif | 111778 | #endif |
111789 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c | 111779 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c |
111790 | index 302681c..3bde377 100644 | 111780 | index eb99458..634c3ec 100644 |
111791 | --- a/virt/kvm/kvm_main.c | 111781 | --- a/virt/kvm/kvm_main.c |
111792 | +++ b/virt/kvm/kvm_main.c | 111782 | +++ b/virt/kvm/kvm_main.c |
111793 | @@ -75,12 +75,17 @@ LIST_HEAD(vm_list); | 111783 | @@ -75,12 +75,17 @@ LIST_HEAD(vm_list); |
@@ -111828,7 +111818,7 @@ index 302681c..3bde377 100644 | |||
111828 | .release = kvm_vcpu_release, | 111818 | .release = kvm_vcpu_release, |
111829 | .unlocked_ioctl = kvm_vcpu_ioctl, | 111819 | .unlocked_ioctl = kvm_vcpu_ioctl, |
111830 | #ifdef CONFIG_COMPAT | 111820 | #ifdef CONFIG_COMPAT |
111831 | @@ -2561,7 +2566,7 @@ static int kvm_vm_mmap(struct file *file, struct vm_area_struct *vma) | 111821 | @@ -2564,7 +2569,7 @@ static int kvm_vm_mmap(struct file *file, struct vm_area_struct *vma) |
111832 | return 0; | 111822 | return 0; |
111833 | } | 111823 | } |
111834 | 111824 | ||
@@ -111837,7 +111827,7 @@ index 302681c..3bde377 100644 | |||
111837 | .release = kvm_vm_release, | 111827 | .release = kvm_vm_release, |
111838 | .unlocked_ioctl = kvm_vm_ioctl, | 111828 | .unlocked_ioctl = kvm_vm_ioctl, |
111839 | #ifdef CONFIG_COMPAT | 111829 | #ifdef CONFIG_COMPAT |
111840 | @@ -2662,7 +2667,7 @@ out: | 111830 | @@ -2665,7 +2670,7 @@ out: |
111841 | return r; | 111831 | return r; |
111842 | } | 111832 | } |
111843 | 111833 | ||
@@ -111846,7 +111836,7 @@ index 302681c..3bde377 100644 | |||
111846 | .unlocked_ioctl = kvm_dev_ioctl, | 111836 | .unlocked_ioctl = kvm_dev_ioctl, |
111847 | .compat_ioctl = kvm_dev_ioctl, | 111837 | .compat_ioctl = kvm_dev_ioctl, |
111848 | .llseek = noop_llseek, | 111838 | .llseek = noop_llseek, |
111849 | @@ -2688,7 +2693,7 @@ static void hardware_enable_nolock(void *junk) | 111839 | @@ -2691,7 +2696,7 @@ static void hardware_enable_nolock(void *junk) |
111850 | 111840 | ||
111851 | if (r) { | 111841 | if (r) { |
111852 | cpumask_clear_cpu(cpu, cpus_hardware_enabled); | 111842 | cpumask_clear_cpu(cpu, cpus_hardware_enabled); |
@@ -111855,7 +111845,7 @@ index 302681c..3bde377 100644 | |||
111855 | printk(KERN_INFO "kvm: enabling virtualization on " | 111845 | printk(KERN_INFO "kvm: enabling virtualization on " |
111856 | "CPU%d failed\n", cpu); | 111846 | "CPU%d failed\n", cpu); |
111857 | } | 111847 | } |
111858 | @@ -2742,10 +2747,10 @@ static int hardware_enable_all(void) | 111848 | @@ -2745,10 +2750,10 @@ static int hardware_enable_all(void) |
111859 | 111849 | ||
111860 | kvm_usage_count++; | 111850 | kvm_usage_count++; |
111861 | if (kvm_usage_count == 1) { | 111851 | if (kvm_usage_count == 1) { |
@@ -111868,7 +111858,7 @@ index 302681c..3bde377 100644 | |||
111868 | hardware_disable_all_nolock(); | 111858 | hardware_disable_all_nolock(); |
111869 | r = -EBUSY; | 111859 | r = -EBUSY; |
111870 | } | 111860 | } |
111871 | @@ -3099,7 +3104,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, | 111861 | @@ -3102,7 +3107,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, |
111872 | kvm_arch_vcpu_put(vcpu); | 111862 | kvm_arch_vcpu_put(vcpu); |
111873 | } | 111863 | } |
111874 | 111864 | ||
@@ -111877,7 +111867,7 @@ index 302681c..3bde377 100644 | |||
111877 | struct module *module) | 111867 | struct module *module) |
111878 | { | 111868 | { |
111879 | int r; | 111869 | int r; |
111880 | @@ -3146,7 +3151,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 111870 | @@ -3149,7 +3154,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
111881 | if (!vcpu_align) | 111871 | if (!vcpu_align) |
111882 | vcpu_align = __alignof__(struct kvm_vcpu); | 111872 | vcpu_align = __alignof__(struct kvm_vcpu); |
111883 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, | 111873 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, |
@@ -111886,7 +111876,7 @@ index 302681c..3bde377 100644 | |||
111886 | if (!kvm_vcpu_cache) { | 111876 | if (!kvm_vcpu_cache) { |
111887 | r = -ENOMEM; | 111877 | r = -ENOMEM; |
111888 | goto out_free_3; | 111878 | goto out_free_3; |
111889 | @@ -3156,9 +3161,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 111879 | @@ -3159,9 +3164,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
111890 | if (r) | 111880 | if (r) |
111891 | goto out_free; | 111881 | goto out_free; |
111892 | 111882 | ||
@@ -111898,7 +111888,7 @@ index 302681c..3bde377 100644 | |||
111898 | 111888 | ||
111899 | r = misc_register(&kvm_dev); | 111889 | r = misc_register(&kvm_dev); |
111900 | if (r) { | 111890 | if (r) { |
111901 | @@ -3168,9 +3175,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | 111891 | @@ -3171,9 +3178,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
111902 | 111892 | ||
111903 | register_syscore_ops(&kvm_syscore_ops); | 111893 | register_syscore_ops(&kvm_syscore_ops); |
111904 | 111894 | ||
diff --git a/main/linux-virt-grsec/net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch b/main/linux-virt-grsec/net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch new file mode 100644 index 0000000000..2d0be38c09 --- /dev/null +++ b/main/linux-virt-grsec/net-loosen-constraints-for-recalculating-checksum-in-skb_segment.patch | |||
@@ -0,0 +1,67 @@ | |||
1 | From 1cdbcb7957cf9e5f841dbcde9b38fd18a804208b Mon Sep 17 00:00:00 2001 | ||
2 | From: Simon Horman <horms@verge.net.au> | ||
3 | Date: Sun, 19 May 2013 15:46:49 +0000 | ||
4 | Subject: net: Loosen constraints for recalculating checksum in skb_segment() | ||
5 | |||
6 | This is a generic solution to resolve a specific problem that I have observed. | ||
7 | |||
8 | If the encapsulation of an skb changes then ability to offload checksums | ||
9 | may also change. In particular it may be necessary to perform checksumming | ||
10 | in software. | ||
11 | |||
12 | An example of such a case is where a non-GRE packet is received but | ||
13 | is to be encapsulated and transmitted as GRE. | ||
14 | |||
15 | Another example relates to my proposed support for for packets | ||
16 | that are non-MPLS when received but MPLS when transmitted. | ||
17 | |||
18 | The cost of this change is that the value of the csum variable may be | ||
19 | checked when it previously was not. In the case where the csum variable is | ||
20 | true this is pure overhead. In the case where the csum variable is false it | ||
21 | leads to software checksumming, which I believe also leads to correct | ||
22 | checksums in transmitted packets for the cases described above. | ||
23 | |||
24 | Further analysis: | ||
25 | |||
26 | This patch relies on the return value of can_checksum_protocol() | ||
27 | being correct and in turn the return value of skb_network_protocol(), | ||
28 | used to provide the protocol parameter of can_checksum_protocol(), | ||
29 | being correct. It also relies on the features passed to skb_segment() | ||
30 | and in turn to can_checksum_protocol() being correct. | ||
31 | |||
32 | I believe that this problem has not been observed for VLANs because it | ||
33 | appears that almost all drivers, the exception being xgbe, set | ||
34 | vlan_features such that that the checksum offload support for VLAN packets | ||
35 | is greater than or equal to that of non-VLAN packets. | ||
36 | |||
37 | I wonder if the code in xgbe may be an oversight and the hardware does | ||
38 | support checksumming of VLAN packets. If so it may be worth updating the | ||
39 | vlan_features of the driver as this patch will force such checksums to be | ||
40 | performed in software rather than hardware. | ||
41 | |||
42 | Signed-off-by: Simon Horman <horms@verge.net.au> | ||
43 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
44 | --- | ||
45 | diff --git a/net/core/skbuff.c b/net/core/skbuff.c | ||
46 | index af9185d..d629891 100644 | ||
47 | --- a/net/core/skbuff.c | ||
48 | +++ b/net/core/skbuff.c | ||
49 | @@ -2853,7 +2853,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features) | ||
50 | doffset + tnl_hlen); | ||
51 | |||
52 | if (fskb != skb_shinfo(skb)->frag_list) | ||
53 | - continue; | ||
54 | + goto perform_csum_check; | ||
55 | |||
56 | if (!sg) { | ||
57 | nskb->ip_summed = CHECKSUM_NONE; | ||
58 | @@ -2917,6 +2917,7 @@ skip_fraglist: | ||
59 | nskb->len += nskb->data_len; | ||
60 | nskb->truesize += nskb->data_len; | ||
61 | |||
62 | +perform_csum_check: | ||
63 | if (!csum) { | ||
64 | nskb->csum = skb_checksum(nskb, doffset, | ||
65 | nskb->len - doffset, 0); | ||
66 | -- | ||
67 | cgit v0.9.2 | ||