aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-12-05 08:30:16 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-12-05 08:51:58 +0000
commit2f7a72b00d39dbf3fb2376e6604ef2e6e67d11f6 (patch)
tree76a8e64e51e426732b1cbe3ba02be6138fed3278 /main/linux-grsec
parent8b87404cfc0b92a143ccccb7bb115e028f63e7af (diff)
downloadaports-2f7a72b00d39dbf3fb2376e6604ef2e6e67d11f6.tar.bz2
aports-2f7a72b00d39dbf3fb2376e6604ef2e6e67d11f6.tar.xz
main/linux-grsec: upgrade to 3.10.22
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.22-unofficial.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.10.21-unofficial.patch)302
2 files changed, 158 insertions, 158 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index f3f8d1adcc..1a5f127e4a 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,7 +2,7 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=3.10.21
+pkgver=3.10.22
case $pkgver in
*.*.*) _kernver=${pkgver%.*};;
*.*) _kernver=${pkgver};;
@@ -151,8 +151,8 @@ dev() {
}
md5sums="4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz
-0d7fd255ad4357b2fde3747163ef8bad patch-3.10.21.xz
-b3496a5c601613e715a5b95580503467 grsecurity-2.9.1-3.10.21-unofficial.patch
+a618186bdb6f5b38dc831875b0d3a1cb patch-3.10.22.xz
+86c74e12d4219d397d8fdb3e59dbab30 grsecurity-2.9.1-3.10.22-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
@@ -164,8 +164,8 @@ b3c0153d53e508e03d73b94d15b24a96 sysctl_lxc.patch
cb5c938dccbee36cfb8bb7ee3546b8af kernelconfig.x86
daa81b89f18254155ac33c5239abf3a4 kernelconfig.x86_64"
sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544 linux-3.10.tar.xz
-245ae9f97ae4017a231d6bbecfe596429fefe029bb044818e570aadea96fb1a3 patch-3.10.21.xz
-c738ab0b2b021c01f0477ad2ab17e4d1b2226634df5c0e71493ddf8f97e53d2d grsecurity-2.9.1-3.10.21-unofficial.patch
+9c889789a1ed733d97c7e34ca67c8c4c3afd69791a4219f842ef7913b24c9115 patch-3.10.22.xz
+cc3d9d1dd9976e2df2278eb8a656026916b35f05e5b1f042d212ce89d9841c1a grsecurity-2.9.1-3.10.22-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
@@ -177,8 +177,8 @@ fc613ac466610b866b721c41836fd5bfb2d4b75bceb67972dc6369d7f62ff47e 0006-ipv4-use-
3e6c4101bfb90b6a30173ef81cd0d0bea51d6a995fc045ca67db7fed271d969d kernelconfig.x86
da67ef700372d080bffb12a86f0a16c987dc79e18fdfb1a88d2704660239e5f0 kernelconfig.x86_64"
sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35 linux-3.10.tar.xz
-f4e97e5c564673dd30cf403d3c87ec6ed5a41a2ee60abea765c482b5e77b18ecf68697d400ce4b7addf230f65d0c1c83a36383c9548665a0227bbbb71572531d patch-3.10.21.xz
-7d26eb703bc66a1f78d2716dce791f356f77e5de8e99cc26410be0f760da912f0b17fe2e1b2ae7308673d8afc9fa96bb87ceacf840db89da90d8d814a4bddfa8 grsecurity-2.9.1-3.10.21-unofficial.patch
+bb62ecf2467aa7543b191ea3e7749fa37f5bddefc5726e6ca7ff4ce1c98e2bb88effbd52af5ea6e42b638d54b1b845fe0b62150866c100a9773dd3d81c9cee8d patch-3.10.22.xz
+33daf2b324ecaa55dcabc35a48f1bfc0966aa55b5ffecbacd198c006dcf93aaa91fa1fe46451e562c15a380cc12cccb84d4b426ecc799556cd48bea12a2eab73 grsecurity-2.9.1-3.10.22-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.21-unofficial.patch b/main/linux-grsec/grsecurity-2.9.1-3.10.22-unofficial.patch
index c9028ba6ad..4550f0d673 100644
--- a/main/linux-grsec/grsecurity-2.9.1-3.10.21-unofficial.patch
+++ b/main/linux-grsec/grsecurity-2.9.1-3.10.22-unofficial.patch
@@ -281,7 +281,7 @@ index 2fe6e76..889ee23 100644
pcd. [PARIDE]
diff --git a/Makefile b/Makefile
-index c0635fb..d6af7ff 100644
+index 001188c..5f48732 100644
--- a/Makefile
+++ b/Makefile
@@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -2370,7 +2370,7 @@ index 60d3b73..e5a0f22 100644
EXPORT_SYMBOL(__get_user_1);
EXPORT_SYMBOL(__get_user_2);
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
-index d43c7e5..257c050 100644
+index 32640ae..7034750 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -47,6 +47,87 @@
@@ -2502,7 +2502,7 @@ index d43c7e5..257c050 100644
SPFIX( addeq r2, r2, #4 )
str r3, [sp, #-4]! @ save the "real" r0 copied
@ from the exception stack
-@@ -316,6 +410,9 @@ ENDPROC(__pabt_svc)
+@@ -317,6 +411,9 @@ ENDPROC(__pabt_svc)
.macro usr_entry
UNWIND(.fnstart )
UNWIND(.cantunwind ) @ don't unwind the user space
@@ -2512,7 +2512,7 @@ index d43c7e5..257c050 100644
sub sp, sp, #S_FRAME_SIZE
ARM( stmib sp, {r1 - r12} )
THUMB( stmia sp, {r0 - r12} )
-@@ -357,7 +454,8 @@ ENDPROC(__pabt_svc)
+@@ -358,7 +455,8 @@ ENDPROC(__pabt_svc)
.endm
.macro kuser_cmpxchg_check
@@ -2522,7 +2522,7 @@ index d43c7e5..257c050 100644
#ifndef CONFIG_MMU
#warning "NPTL on non MMU needs fixing"
#else
-@@ -414,7 +512,9 @@ __und_usr:
+@@ -415,7 +513,9 @@ __und_usr:
tst r3, #PSR_T_BIT @ Thumb mode?
bne __und_usr_thumb
sub r4, r2, #4 @ ARM instr at LR - 4
@@ -2532,7 +2532,7 @@ index d43c7e5..257c050 100644
#ifdef CONFIG_CPU_ENDIAN_BE8
rev r0, r0 @ little endian instruction
#endif
-@@ -449,10 +549,14 @@ __und_usr_thumb:
+@@ -450,10 +550,14 @@ __und_usr_thumb:
*/
.arch armv6t2
#endif
@@ -2547,7 +2547,7 @@ index d43c7e5..257c050 100644
add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
str r2, [sp, #S_PC] @ it's a 2x16bit instr, update
orr r0, r0, r5, lsl #16
-@@ -481,7 +585,8 @@ ENDPROC(__und_usr)
+@@ -482,7 +586,8 @@ ENDPROC(__und_usr)
*/
.pushsection .fixup, "ax"
.align 2
@@ -2557,7 +2557,7 @@ index d43c7e5..257c050 100644
.popsection
.pushsection __ex_table,"a"
.long 1b, 4b
-@@ -690,7 +795,7 @@ ENTRY(__switch_to)
+@@ -691,7 +796,7 @@ ENTRY(__switch_to)
THUMB( stmia ip!, {r4 - sl, fp} ) @ Store most regs on stack
THUMB( str sp, [ip], #4 )
THUMB( str lr, [ip], #4 )
@@ -2566,7 +2566,7 @@ index d43c7e5..257c050 100644
ldr r6, [r2, #TI_CPU_DOMAIN]
#endif
set_tls r3, r4, r5
-@@ -699,7 +804,7 @@ ENTRY(__switch_to)
+@@ -700,7 +805,7 @@ ENTRY(__switch_to)
ldr r8, =__stack_chk_guard
ldr r7, [r7, #TSK_STACK_CANARY]
#endif
@@ -8188,10 +8188,10 @@ index 64f7bd5..8dd550f 100644
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
-index 3233099..2ada67f 100644
+index 7e9dff8..b63e4b5 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
-@@ -995,7 +995,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
+@@ -993,7 +993,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
/* Save user registers on the stack */
frame = &rt_sf->uc.uc_mcontext;
addr = frame;
@@ -8201,10 +8201,10 @@ index 3233099..2ada67f 100644
tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp;
} else {
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
-index 887e99d..310bc11 100644
+index 35c20a1..e4bf34c 100644
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
-@@ -751,7 +751,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
+@@ -757,7 +757,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
#endif
/* Set up to return from userspace. */
@@ -35124,7 +35124,7 @@ index fcae5fa..e9f71ea 100644
static void delete_gpe_attr_array(void)
{
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index 7b9bdd8..37638ca 100644
+index 8905e03..d1b0719 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -1230,7 +1230,7 @@ int ahci_kick_engine(struct ata_port *ap)
@@ -35137,7 +35137,7 @@ index 7b9bdd8..37638ca 100644
unsigned long timeout_msec)
{
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
-index adf002a..06c46a7 100644
+index cd6aa28..6f5e966 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -98,7 +98,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
@@ -35149,7 +35149,7 @@ index adf002a..06c46a7 100644
struct ata_force_param {
const char *name;
-@@ -4792,7 +4792,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
+@@ -4793,7 +4793,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
struct ata_port *ap;
unsigned int tag;
@@ -35158,7 +35158,7 @@ index adf002a..06c46a7 100644
ap = qc->ap;
qc->flags = 0;
-@@ -4808,7 +4808,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
+@@ -4809,7 +4809,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
struct ata_port *ap;
struct ata_link *link;
@@ -35167,7 +35167,7 @@ index adf002a..06c46a7 100644
WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
ap = qc->ap;
link = qc->dev->link;
-@@ -5926,6 +5926,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
+@@ -5927,6 +5927,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
return;
spin_lock(&lock);
@@ -35175,7 +35175,7 @@ index adf002a..06c46a7 100644
for (cur = ops->inherits; cur; cur = cur->inherits) {
void **inherit = (void **)cur;
-@@ -5939,8 +5940,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
+@@ -5940,8 +5941,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
if (IS_ERR(*pp))
*pp = NULL;
@@ -35186,7 +35186,7 @@ index adf002a..06c46a7 100644
spin_unlock(&lock);
}
-@@ -6133,7 +6135,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
+@@ -6134,7 +6136,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
/* give ports names and add SCSI hosts */
for (i = 0; i < host->n_ports; i++)
@@ -36854,7 +36854,7 @@ index 4222aff..1f79506 100644
static struct asender_cmd asender_tbl[] = {
[P_PING] = { 0, got_Ping },
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 0055973..4c768a6 100644
+index 4a81165..53dc2c7 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file,
@@ -38999,10 +38999,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 ab95259..8898d43 100644
+index c714d4d..665732e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -8935,13 +8935,13 @@ struct intel_quirk {
+@@ -8939,13 +8939,13 @@ struct intel_quirk {
int subsystem_vendor;
int subsystem_device;
void (*hook)(struct drm_device *dev);
@@ -39018,7 +39018,7 @@ index ab95259..8898d43 100644
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)
+@@ -8953,18 +8953,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
return 1;
}
@@ -39167,10 +39167,10 @@ index f2b30f8..d0f9a95 100644
struct ttm_buffer_object *,
struct ttm_mem_reg *, struct ttm_mem_reg *);
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
-index b4b4d0c..b7edc15 100644
+index 5bccf31..7b5667c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
-@@ -322,7 +322,7 @@ validate_init(struct nouveau_channel *chan, struct drm_file *file_priv,
+@@ -323,7 +323,7 @@ validate_init(struct nouveau_channel *chan, struct drm_file *file_priv,
int ret, i;
struct nouveau_bo *res_bo = NULL;
@@ -39179,7 +39179,7 @@ index b4b4d0c..b7edc15 100644
retry:
if (++trycnt > 100000) {
NV_ERROR(cli, "%s failed and gave up.\n", __func__);
-@@ -359,7 +359,7 @@ retry:
+@@ -360,7 +360,7 @@ retry:
if (ret) {
validate_fini(op, NULL);
if (unlikely(ret == -EAGAIN)) {
@@ -39899,10 +39899,10 @@ index 8c04943..4370ed9 100644
err = drm_debugfs_create_files(dc->debugfs_files,
ARRAY_SIZE(debugfs_files),
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index e04bf0ef..500861b 100644
+index c4e5cdf..7ab7631 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
-@@ -2358,7 +2358,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
+@@ -2355,7 +2355,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
int hid_add_device(struct hid_device *hdev)
{
@@ -39911,7 +39911,7 @@ index e04bf0ef..500861b 100644
int ret;
if (WARN_ON(hdev->status & HID_STAT_ADDED))
-@@ -2392,7 +2392,7 @@ int hid_add_device(struct hid_device *hdev)
+@@ -2389,7 +2389,7 @@ int hid_add_device(struct hid_device *hdev)
/* XXX hack, any other cleaner solution after the driver core
* is converted to allow more than 20 bytes as the device name? */
dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -39921,7 +39921,7 @@ index e04bf0ef..500861b 100644
hid_debug_register(hdev, dev_name(&hdev->dev));
ret = device_add(&hdev->dev);
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index b6701ce..720a166 100644
+index 3d8e58a..bf8b8ce 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -325,12 +325,21 @@ static void mt_feature_mapping(struct hid_device *hdev,
@@ -39987,7 +39987,7 @@ index 90124ff..3761764 100644
*off += size;
diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c
-index 145a4cb..2353a3e 100644
+index 0bb3bb8..1222415 100644
--- a/drivers/hid/uhid.c
+++ b/drivers/hid/uhid.c
@@ -47,7 +47,7 @@ struct uhid_device {
@@ -42001,7 +42001,7 @@ index d907ca6..cfb8384 100644
schedule_work(&sc->trigger_event);
}
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
-index 1ff252a..ee384c1 100644
+index 9e3a045..9d0f95b 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -389,7 +389,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
@@ -42094,7 +42094,7 @@ index 1c13071..4bb0452 100644
void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
diff --git a/drivers/md/md.c b/drivers/md/md.c
-index d78f1ff..952b9c6 100644
+index 2290b95..77ca464 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -234,10 +234,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio);
@@ -42166,7 +42166,7 @@ index d78f1ff..952b9c6 100644
INIT_LIST_HEAD(&rdev->same_set);
init_waitqueue_head(&rdev->blocked_wait);
-@@ -7009,7 +7009,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
+@@ -7010,7 +7010,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
spin_unlock(&pers_lock);
seq_printf(seq, "\n");
@@ -42175,7 +42175,7 @@ index d78f1ff..952b9c6 100644
return 0;
}
if (v == (void*)2) {
-@@ -7112,7 +7112,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
+@@ -7113,7 +7113,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
return error;
seq = file->private_data;
@@ -42184,7 +42184,7 @@ index d78f1ff..952b9c6 100644
return error;
}
-@@ -7126,7 +7126,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
+@@ -7127,7 +7127,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
/* always allow read */
mask = POLLIN | POLLRDNORM;
@@ -42193,7 +42193,7 @@ index d78f1ff..952b9c6 100644
mask |= POLLERR | POLLPRI;
return mask;
}
-@@ -7170,7 +7170,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
+@@ -7171,7 +7171,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
(int)part_stat_read(&disk->part0, sectors[1]) -
@@ -42708,10 +42708,10 @@ index 1cf382a..c22998c 100644
dev_set_drvdata(&dev->dev, dev);
rc = device_add(&dev->dev);
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
-index 3940bb0..fb3952a 100644
+index 20e345d..da56fe4 100644
--- a/drivers/media/usb/dvb-usb/cxusb.c
+++ b/drivers/media/usb/dvb-usb/cxusb.c
-@@ -1068,7 +1068,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
+@@ -1101,7 +1101,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
struct dib0700_adapter_state {
int (*set_param_save) (struct dvb_frontend *);
@@ -42721,10 +42721,10 @@ index 3940bb0..fb3952a 100644
static int dib7070_set_param_override(struct dvb_frontend *fe)
{
diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
-index 6e237b6..dc25556 100644
+index 71b22f5..a63b33f 100644
--- a/drivers/media/usb/dvb-usb/dw2102.c
+++ b/drivers/media/usb/dvb-usb/dw2102.c
-@@ -118,7 +118,7 @@ struct su3000_state {
+@@ -121,7 +121,7 @@ struct su3000_state {
struct s6x0_state {
int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v);
@@ -57896,7 +57896,7 @@ index cb424a4..850e4dd 100644
lock_flocks();
diff --git a/fs/namei.c b/fs/namei.c
-index 9ed9361..2b72db1 100644
+index cccaf77..b28ec8a 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -319,16 +319,32 @@ int generic_permission(struct inode *inode, int mask)
@@ -58030,7 +58030,7 @@ index 9ed9361..2b72db1 100644
return retval;
}
-@@ -2381,6 +2413,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
+@@ -2382,6 +2414,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
if (flag & O_NOATIME && !inode_owner_or_capable(inode))
return -EPERM;
@@ -58044,7 +58044,7 @@ index 9ed9361..2b72db1 100644
return 0;
}
-@@ -2602,7 +2641,7 @@ looked_up:
+@@ -2603,7 +2642,7 @@ looked_up:
* cleared otherwise prior to returning.
*/
static int lookup_open(struct nameidata *nd, struct path *path,
@@ -58053,7 +58053,7 @@ index 9ed9361..2b72db1 100644
const struct open_flags *op,
bool got_write, int *opened)
{
-@@ -2637,6 +2676,17 @@ static int lookup_open(struct nameidata *nd, struct path *path,
+@@ -2638,6 +2677,17 @@ static int lookup_open(struct nameidata *nd, struct path *path,
/* Negative dentry, just create the file */
if (!dentry->d_inode && (op->open_flag & O_CREAT)) {
umode_t mode = op->mode;
@@ -58071,7 +58071,7 @@ index 9ed9361..2b72db1 100644
if (!IS_POSIXACL(dir->d_inode))
mode &= ~current_umask();
/*
-@@ -2658,6 +2708,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
+@@ -2659,6 +2709,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
nd->flags & LOOKUP_EXCL);
if (error)
goto out_dput;
@@ -58080,7 +58080,7 @@ index 9ed9361..2b72db1 100644
}
out_no_open:
path->dentry = dentry;
-@@ -2672,7 +2724,7 @@ out_dput:
+@@ -2673,7 +2725,7 @@ out_dput:
/*
* Handle the last step of open()
*/
@@ -58089,7 +58089,7 @@ index 9ed9361..2b72db1 100644
struct file *file, const struct open_flags *op,
int *opened, struct filename *name)
{
-@@ -2701,16 +2753,32 @@ static int do_last(struct nameidata *nd, struct path *path,
+@@ -2702,16 +2754,32 @@ static int do_last(struct nameidata *nd, struct path *path,
error = complete_walk(nd);
if (error)
return error;
@@ -58122,7 +58122,7 @@ index 9ed9361..2b72db1 100644
audit_inode(name, dir, 0);
goto finish_open;
}
-@@ -2759,7 +2827,7 @@ retry_lookup:
+@@ -2760,7 +2828,7 @@ retry_lookup:
*/
}
mutex_lock(&dir->d_inode->i_mutex);
@@ -58131,7 +58131,7 @@ index 9ed9361..2b72db1 100644
mutex_unlock(&dir->d_inode->i_mutex);
if (error <= 0) {
-@@ -2783,11 +2851,28 @@ retry_lookup:
+@@ -2784,11 +2852,28 @@ retry_lookup:
goto finish_open_created;
}
@@ -58161,7 +58161,7 @@ index 9ed9361..2b72db1 100644
/*
* If atomic_open() acquired write access it is dropped now due to
-@@ -2828,6 +2913,11 @@ finish_lookup:
+@@ -2829,6 +2914,11 @@ finish_lookup:
}
}
BUG_ON(inode != path->dentry->d_inode);
@@ -58173,7 +58173,7 @@ index 9ed9361..2b72db1 100644
return 1;
}
-@@ -2837,7 +2927,6 @@ finish_lookup:
+@@ -2838,7 +2928,6 @@ finish_lookup:
save_parent.dentry = nd->path.dentry;
save_parent.mnt = mntget(path->mnt);
nd->path.dentry = path->dentry;
@@ -58181,7 +58181,7 @@ index 9ed9361..2b72db1 100644
}
nd->inode = inode;
/* Why this, you ask? _Now_ we might have grown LOOKUP_JUMPED... */
-@@ -2846,6 +2935,16 @@ finish_lookup:
+@@ -2847,6 +2936,16 @@ finish_lookup:
path_put(&save_parent);
return error;
}
@@ -58198,7 +58198,7 @@ index 9ed9361..2b72db1 100644
error = -EISDIR;
if ((open_flag & O_CREAT) && S_ISDIR(nd->inode->i_mode))
goto out;
-@@ -2944,7 +3043,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
+@@ -2945,7 +3044,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
if (unlikely(error))
goto out;
@@ -58207,7 +58207,7 @@ index 9ed9361..2b72db1 100644
while (unlikely(error > 0)) { /* trailing symlink */
struct path link = path;
void *cookie;
-@@ -2962,7 +3061,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
+@@ -2963,7 +3062,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
error = follow_link(&link, nd, &cookie);
if (unlikely(error))
break;
@@ -58216,7 +58216,7 @@ index 9ed9361..2b72db1 100644
put_link(nd, &link, cookie);
}
out:
-@@ -3062,8 +3161,12 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
+@@ -3063,8 +3162,12 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
goto unlock;
error = -EEXIST;
@@ -58230,7 +58230,7 @@ index 9ed9361..2b72db1 100644
/*
* Special case - lookup gave negative, but... we had foo/bar/
* From the vfs_mknod() POV we just have a negative dentry -
-@@ -3115,6 +3218,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
+@@ -3116,6 +3219,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
}
EXPORT_SYMBOL(user_path_create);
@@ -58251,7 +58251,7 @@ index 9ed9361..2b72db1 100644
int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
{
int error = may_create(dir, dentry);
-@@ -3177,6 +3294,17 @@ retry:
+@@ -3178,6 +3295,17 @@ retry:
if (!IS_POSIXACL(path.dentry->d_inode))
mode &= ~current_umask();
@@ -58269,7 +58269,7 @@ index 9ed9361..2b72db1 100644
error = security_path_mknod(&path, dentry, mode, dev);
if (error)
goto out;
-@@ -3193,6 +3321,8 @@ retry:
+@@ -3194,6 +3322,8 @@ retry:
break;
}
out:
@@ -58278,7 +58278,7 @@ index 9ed9361..2b72db1 100644
done_path_create(&path, dentry);
if (retry_estale(error, lookup_flags)) {
lookup_flags |= LOOKUP_REVAL;
-@@ -3245,9 +3375,16 @@ retry:
+@@ -3246,9 +3376,16 @@ retry:
if (!IS_POSIXACL(path.dentry->d_inode))
mode &= ~current_umask();
@@ -58295,7 +58295,7 @@ index 9ed9361..2b72db1 100644
done_path_create(&path, dentry);
if (retry_estale(error, lookup_flags)) {
lookup_flags |= LOOKUP_REVAL;
-@@ -3328,6 +3465,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
+@@ -3329,6 +3466,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
struct filename *name;
struct dentry *dentry;
struct nameidata nd;
@@ -58304,7 +58304,7 @@ index 9ed9361..2b72db1 100644
unsigned int lookup_flags = 0;
retry:
name = user_path_parent(dfd, pathname, &nd, lookup_flags);
-@@ -3360,10 +3499,21 @@ retry:
+@@ -3361,10 +3500,21 @@ retry:
error = -ENOENT;
goto exit3;
}
@@ -58326,7 +58326,7 @@ index 9ed9361..2b72db1 100644
exit3:
dput(dentry);
exit2:
-@@ -3429,6 +3579,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
+@@ -3430,6 +3580,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
struct dentry *dentry;
struct nameidata nd;
struct inode *inode = NULL;
@@ -58335,7 +58335,7 @@ index 9ed9361..2b72db1 100644
unsigned int lookup_flags = 0;
retry:
name = user_path_parent(dfd, pathname, &nd, lookup_flags);
-@@ -3455,10 +3607,22 @@ retry:
+@@ -3456,10 +3608,22 @@ retry:
if (!inode)
goto slashes;
ihold(inode);
@@ -58358,7 +58358,7 @@ index 9ed9361..2b72db1 100644
exit2:
dput(dentry);
}
-@@ -3536,9 +3700,17 @@ retry:
+@@ -3537,9 +3701,17 @@ retry:
if (IS_ERR(dentry))
goto out_putname;
@@ -58376,7 +58376,7 @@ index 9ed9361..2b72db1 100644
done_path_create(&path, dentry);
if (retry_estale(error, lookup_flags)) {
lookup_flags |= LOOKUP_REVAL;
-@@ -3612,6 +3784,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+@@ -3613,6 +3785,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
{
struct dentry *new_dentry;
struct path old_path, new_path;
@@ -58384,7 +58384,7 @@ index 9ed9361..2b72db1 100644
int how = 0;
int error;
-@@ -3635,7 +3808,7 @@ retry:
+@@ -3636,7 +3809,7 @@ retry:
if (error)
return error;
@@ -58393,7 +58393,7 @@ index 9ed9361..2b72db1 100644
(how & LOOKUP_REVAL));
error = PTR_ERR(new_dentry);
if (IS_ERR(new_dentry))
-@@ -3647,11 +3820,28 @@ retry:
+@@ -3648,11 +3821,28 @@ retry:
error = may_linkat(&old_path);
if (unlikely(error))
goto out_dput;
@@ -58422,7 +58422,7 @@ index 9ed9361..2b72db1 100644
done_path_create(&new_path, new_dentry);
if (retry_estale(error, how)) {
how |= LOOKUP_REVAL;
-@@ -3897,12 +4087,21 @@ retry:
+@@ -3898,12 +4088,21 @@ retry:
if (new_dentry == trap)
goto exit5;
@@ -58444,7 +58444,7 @@ index 9ed9361..2b72db1 100644
exit5:
dput(new_dentry);
exit4:
-@@ -3934,6 +4133,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
+@@ -3935,6 +4134,8 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
{
@@ -58453,7 +58453,7 @@ index 9ed9361..2b72db1 100644
int len;
len = PTR_ERR(link);
-@@ -3943,7 +4144,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c
+@@ -3944,7 +4145,14 @@ int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const c
len = strlen(link);
if (len > (unsigned) buflen)
len = buflen;
@@ -80011,7 +80011,7 @@ index e83ac04..ddd6ed5 100644
* Ok, we have completed the initial bootup, and
* we're essentially up and running. Get rid of the
diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
-index 130dfec..cc88451 100644
+index b0e99de..09f385c 100644
--- a/ipc/ipc_sysctl.c
+++ b/ipc/ipc_sysctl.c
@@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table)
@@ -80033,7 +80033,7 @@ index 130dfec..cc88451 100644
memcpy(&ipc_table, table, sizeof(ipc_table));
ipc_table.data = get_ipc(table);
@@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(ctl_table *table, int write,
- static int proc_ipc_callback_dointvec(ctl_table *table, int write,
+ static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
- struct ctl_table ipc_table;
@@ -80041,7 +80041,7 @@ index 130dfec..cc88451 100644
size_t lenp_bef = *lenp;
int rc;
-@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec(ctl_table *table, int write,
+@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
static int proc_ipc_doulongvec_minmax(ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
@@ -80073,7 +80073,7 @@ index 383d638..943fdbb 100644
mq_table.data = get_mq(table);
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
-index e4e47f6..a85e0ad 100644
+index ae1996d..a35f2cc 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -278,6 +278,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
@@ -80114,7 +80114,7 @@ index 558aa91..359e718 100644
msg_params.flg = msgflg;
diff --git a/ipc/sem.c b/ipc/sem.c
-index 8c4f59b..3a3f4ff 100644
+index db9d241..bc8427c 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -562,10 +562,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
@@ -80257,7 +80257,7 @@ index 8d6e145..33e0b1e 100644
current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
set_fs(fs);
diff --git a/kernel/audit.c b/kernel/audit.c
-index 7b0e23a..861041e 100644
+index 7ddfd8a..c97daf0 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -118,7 +118,7 @@ u32 audit_sig_sid = 0;
@@ -80287,7 +80287,7 @@ index 7b0e23a..861041e 100644
audit_rate_limit,
audit_backlog_limit);
audit_panic(message);
-@@ -664,7 +664,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -665,7 +665,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
status_set.pid = audit_pid;
status_set.rate_limit = audit_rate_limit;
status_set.backlog_limit = audit_backlog_limit;
@@ -80310,10 +80310,10 @@ index 6bd4a90..0ee9eff 100644
f->val = 0;
}
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
-index 3c8a601..3a416f6 100644
+index 9845cb3..3ec9369 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
-@@ -1956,7 +1956,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
+@@ -1962,7 +1962,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
}
/* global counter which is incremented every time something logs in */
@@ -80322,7 +80322,7 @@ index 3c8a601..3a416f6 100644
/**
* audit_set_loginuid - set current task's audit_context loginuid
-@@ -1980,7 +1980,7 @@ int audit_set_loginuid(kuid_t loginuid)
+@@ -1986,7 +1986,7 @@ int audit_set_loginuid(kuid_t loginuid)
return -EPERM;
#endif /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */
@@ -80428,10 +80428,10 @@ index f6c2ce5..982c0f9 100644
+ return ns_capable_nolog(ns, cap) && kuid_has_mapping(ns, inode->i_uid);
+}
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
-index b6b26fa..ae2217e 100644
+index d0def7f..ff3a63e 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -5398,7 +5398,7 @@ static int cgroup_css_links_read(struct cgroup *cont,
+@@ -5422,7 +5422,7 @@ static int cgroup_css_links_read(struct cgroup *cont,
struct css_set *cg = link->cg;
struct task_struct *task;
int count = 0;
@@ -85193,7 +85193,7 @@ index d3617db..c98bbe9 100644
{
unsigned long sec = value->tv_sec;
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
-index f11d83b..d016d91 100644
+index a8f5084..5a673cb 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c
@@ -750,7 +750,7 @@ static int __init alarmtimer_init(void)
@@ -85407,10 +85407,10 @@ index b8b8560..75b1a09 100644
ret = -EIO;
bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
-index f23449d..b8cc3a1 100644
+index 331c102..b7a32e2 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
-@@ -1925,12 +1925,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
+@@ -1919,12 +1919,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
if (unlikely(ftrace_disabled))
return 0;
@@ -85441,7 +85441,7 @@ index f23449d..b8cc3a1 100644
start_pg = ftrace_allocate_pages(count);
if (!start_pg)
-@@ -4718,8 +4725,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
+@@ -4717,8 +4724,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
static int ftrace_graph_active;
@@ -85450,7 +85450,7 @@ index f23449d..b8cc3a1 100644
int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
{
return 0;
-@@ -4863,6 +4868,10 @@ ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state,
+@@ -4862,6 +4867,10 @@ ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state,
return NOTIFY_DONE;
}
@@ -85458,10 +85458,10 @@ index f23449d..b8cc3a1 100644
+ .notifier_call = ftrace_suspend_notifier_call
+};
+
- int register_ftrace_graph(trace_func_graph_ret_t retfunc,
- trace_func_graph_ent_t entryfunc)
- {
-@@ -4876,7 +4885,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc,
+ /* Just a place holder for function graph */
+ static struct ftrace_ops fgraph_ops __read_mostly = {
+ .func = ftrace_stub,
+@@ -4882,7 +4891,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc,
goto out;
}
@@ -85992,10 +85992,10 @@ index 05039e3..17490c7 100644
.thread_should_run = watchdog_should_run,
.thread_fn = watchdog,
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index e52d002..576b367 100644
+index 68086a3..729fa07 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
-@@ -4605,7 +4605,7 @@ static void rebind_workers(struct worker_pool *pool)
+@@ -4615,7 +4615,7 @@ static void rebind_workers(struct worker_pool *pool)
WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND));
worker_flags |= WORKER_REBOUND;
worker_flags &= ~WORKER_UNBOUND;
@@ -86532,7 +86532,7 @@ index 4f5b1dd..7cab418 100644
+}
+EXPORT_SYMBOL(copy_to_user_overflow);
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
-index e149c64..24aa71a 100644
+index 620fae4..6ed4d6c 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -16,6 +16,9 @@
@@ -86545,7 +86545,7 @@ index e149c64..24aa71a 100644
#include <stdarg.h>
#include <linux/module.h> /* for KSYM_SYMBOL_LEN */
#include <linux/types.h>
-@@ -981,7 +984,11 @@ char *netdev_feature_string(char *buf, char *end, const u8 *addr,
+@@ -982,7 +985,11 @@ char *netdev_feature_string(char *buf, char *end, const u8 *addr,
return number(buf, end, *(const netdev_features_t *)addr, spec);
}
@@ -86557,7 +86557,7 @@ index e149c64..24aa71a 100644
/*
* Show a '%p' thing. A kernel extension is that the '%p' is followed
-@@ -994,6 +1001,7 @@ int kptr_restrict __read_mostly;
+@@ -995,6 +1002,7 @@ int kptr_restrict __read_mostly;
* - 'f' For simple symbolic function names without offset
* - 'S' For symbolic direct pointers with offset
* - 's' For symbolic direct pointers without offset
@@ -86565,7 +86565,7 @@ index e149c64..24aa71a 100644
* - '[FfSs]R' as above with __builtin_extract_return_addr() translation
* - 'B' For backtraced symbolic direct pointers with offset
* - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
-@@ -1052,12 +1060,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1053,12 +1061,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
if (!ptr && *fmt != 'K') {
/*
@@ -86580,7 +86580,7 @@ index e149c64..24aa71a 100644
}
switch (*fmt) {
-@@ -1067,6 +1075,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1068,6 +1076,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
/* Fallthrough */
case 'S':
case 's':
@@ -86593,7 +86593,7 @@ index e149c64..24aa71a 100644
case 'B':
return symbol_string(buf, end, ptr, spec, fmt);
case 'R':
-@@ -1107,6 +1121,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1108,6 +1122,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
va_end(va);
return buf;
}
@@ -86602,7 +86602,7 @@ index e149c64..24aa71a 100644
case 'K':
/*
* %pK cannot be used in IRQ context because its test
-@@ -1136,6 +1152,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1163,6 +1179,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
return number(buf, end,
(unsigned long long) *((phys_addr_t *)ptr), spec);
}
@@ -86624,7 +86624,7 @@ index e149c64..24aa71a 100644
spec.flags |= SMALL;
if (spec.field_width == -1) {
spec.field_width = default_width;
-@@ -1857,11 +1888,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -1884,11 +1915,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
typeof(type) value; \
if (sizeof(type) == 8) { \
args = PTR_ALIGN(args, sizeof(u32)); \
@@ -86639,7 +86639,7 @@ index e149c64..24aa71a 100644
} \
args += sizeof(type); \
value; \
-@@ -1924,7 +1955,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -1951,7 +1982,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
case FORMAT_TYPE_STR: {
const char *str_arg = args;
args += strlen(str_arg) + 1;
@@ -88072,7 +88072,7 @@ index 79b7cf7..9944291 100644
capable(CAP_IPC_LOCK))
ret = do_mlockall(flags);
diff --git a/mm/mmap.c b/mm/mmap.c
-index 8d25fdc..bfb7626 100644
+index 8f87b14..5748b4e 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -36,6 +36,7 @@
@@ -88620,9 +88620,9 @@ index 8d25fdc..bfb7626 100644
struct vm_unmapped_area_info info;
+ unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
- if (len > TASK_SIZE)
+ if (len > TASK_SIZE - mmap_min_addr)
return -ENOMEM;
-@@ -1859,29 +2119,45 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1859,29 +2119,46 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
if (flags & MAP_FIXED)
return addr;
@@ -88633,9 +88633,9 @@ index 8d25fdc..bfb7626 100644
if (addr) {
addr = PAGE_ALIGN(addr);
vma = find_vma(mm, addr);
-- if (TASK_SIZE - len >= addr &&
+ if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
- (!vma || addr + len <= vma->vm_start))
-+ if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
++ check_heap_stack_gap(vma, addr, len, offset))
return addr;
}
@@ -88671,15 +88671,15 @@ index 8d25fdc..bfb7626 100644
mm->free_area_cache = addr;
}
-@@ -1899,6 +2175,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1899,6 +2176,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
struct mm_struct *mm = current->mm;
unsigned long addr = addr0;
struct vm_unmapped_area_info info;
+ unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
/* requested length too big for entire address space */
- if (len > TASK_SIZE)
-@@ -1907,12 +2184,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+ if (len > TASK_SIZE - mmap_min_addr)
+@@ -1907,12 +2185,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
if (flags & MAP_FIXED)
return addr;
@@ -88691,21 +88691,21 @@ index 8d25fdc..bfb7626 100644
if (addr) {
addr = PAGE_ALIGN(addr);
vma = find_vma(mm, addr);
-- if (TASK_SIZE - len >= addr &&
+ if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
- (!vma || addr + len <= vma->vm_start))
-+ if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
++ check_heap_stack_gap(vma, addr, len, offset))
return addr;
}
-@@ -1921,6 +2201,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
- info.low_limit = PAGE_SIZE;
+@@ -1921,6 +2203,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+ info.low_limit = max(PAGE_SIZE, mmap_min_addr);
info.high_limit = mm->mmap_base;
info.align_mask = 0;
+ info.threadstack_offset = offset;
addr = vm_unmapped_area(&info);
/*
-@@ -1933,6 +2214,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1933,6 +2216,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
VM_BUG_ON(addr != -ENOMEM);
info.flags = 0;
info.low_limit = TASK_UNMAPPED_BASE;
@@ -88718,7 +88718,7 @@ index 8d25fdc..bfb7626 100644
info.high_limit = TASK_SIZE;
addr = vm_unmapped_area(&info);
}
-@@ -1943,6 +2230,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1943,6 +2232,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
{
@@ -88731,7 +88731,7 @@ index 8d25fdc..bfb7626 100644
/*
* Is this a new hole at the highest possible address?
*/
-@@ -1950,8 +2243,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1950,8 +2245,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
mm->free_area_cache = addr;
/* dont allow allocations above current base */
@@ -88743,7 +88743,7 @@ index 8d25fdc..bfb7626 100644
}
unsigned long
-@@ -2047,6 +2342,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
+@@ -2047,6 +2344,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
return vma;
}
@@ -88772,7 +88772,7 @@ index 8d25fdc..bfb7626 100644
/*
* Verify that the stack growth is acceptable and
* update accounting. This is shared with both the
-@@ -2063,6 +2380,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2063,6 +2382,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
return -ENOMEM;
/* Stack limit test */
@@ -88780,7 +88780,7 @@ index 8d25fdc..bfb7626 100644
if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
return -ENOMEM;
-@@ -2073,6 +2391,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2073,6 +2393,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
locked = mm->locked_vm + grow;
limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
limit >>= PAGE_SHIFT;
@@ -88788,7 +88788,7 @@ index 8d25fdc..bfb7626 100644
if (locked > limit && !capable(CAP_IPC_LOCK))
return -ENOMEM;
}
-@@ -2102,37 +2421,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2102,37 +2423,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
* PA-RISC uses this for its stack; IA64 for its Register Backing Store.
* vma is the last one with address > vma->vm_end. Have to extend vma.
*/
@@ -88846,7 +88846,7 @@ index 8d25fdc..bfb7626 100644
unsigned long size, grow;
size = address - vma->vm_start;
-@@ -2167,6 +2497,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
+@@ -2167,6 +2499,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
}
}
}
@@ -88855,7 +88855,7 @@ index 8d25fdc..bfb7626 100644
vma_unlock_anon_vma(vma);
khugepaged_enter_vma_merge(vma);
validate_mm(vma->vm_mm);
-@@ -2181,6 +2513,8 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2181,6 +2515,8 @@ int expand_downwards(struct vm_area_struct *vma,
unsigned long address)
{
int error;
@@ -88864,7 +88864,7 @@ index 8d25fdc..bfb7626 100644
/*
* We must make sure the anon_vma is allocated
-@@ -2194,6 +2528,15 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2194,6 +2530,15 @@ int expand_downwards(struct vm_area_struct *vma,
if (error)
return error;
@@ -88880,7 +88880,7 @@ index 8d25fdc..bfb7626 100644
vma_lock_anon_vma(vma);
/*
-@@ -2203,9 +2546,17 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2203,9 +2548,17 @@ int expand_downwards(struct vm_area_struct *vma,
*/
/* Somebody else might have raced and expanded it already */
@@ -88899,7 +88899,7 @@ index 8d25fdc..bfb7626 100644
size = vma->vm_end - address;
grow = (vma->vm_start - address) >> PAGE_SHIFT;
-@@ -2230,13 +2581,27 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2230,13 +2583,27 @@ int expand_downwards(struct vm_area_struct *vma,
vma->vm_pgoff -= grow;
anon_vma_interval_tree_post_update_vma(vma);
vma_gap_update(vma);
@@ -88927,7 +88927,7 @@ index 8d25fdc..bfb7626 100644
khugepaged_enter_vma_merge(vma);
validate_mm(vma->vm_mm);
return error;
-@@ -2334,6 +2699,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2334,6 +2701,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
do {
long nrpages = vma_pages(vma);
@@ -88941,7 +88941,7 @@ index 8d25fdc..bfb7626 100644
if (vma->vm_flags & VM_ACCOUNT)
nr_accounted += nrpages;
vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
-@@ -2379,6 +2751,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2379,6 +2753,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
insertion_point = (prev ? &prev->vm_next : &mm->mmap);
vma->vm_prev = NULL;
do {
@@ -88958,7 +88958,7 @@ index 8d25fdc..bfb7626 100644
vma_rb_erase(vma, &mm->mm_rb);
mm->map_count--;
tail_vma = vma;
-@@ -2410,14 +2792,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2410,14 +2794,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
struct vm_area_struct *new;
int err = -ENOMEM;
@@ -88992,7 +88992,7 @@ index 8d25fdc..bfb7626 100644
/* most fields are the same, copy all, and then fixup */
*new = *vma;
-@@ -2430,6 +2831,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2430,6 +2833,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
}
@@ -89015,7 +89015,7 @@ index 8d25fdc..bfb7626 100644
pol = mpol_dup(vma_policy(vma));
if (IS_ERR(pol)) {
err = PTR_ERR(pol);
-@@ -2452,6 +2869,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2452,6 +2871,36 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
else
err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
@@ -89052,7 +89052,7 @@ index 8d25fdc..bfb7626 100644
/* Success. */
if (!err)
return 0;
-@@ -2461,10 +2908,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2461,10 +2910,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
new->vm_ops->close(new);
if (new->vm_file)
fput(new->vm_file);
@@ -89072,7 +89072,7 @@ index 8d25fdc..bfb7626 100644
kmem_cache_free(vm_area_cachep, new);
out_err:
return err;
-@@ -2477,6 +2932,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2477,6 +2934,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long addr, int new_below)
{
@@ -89088,7 +89088,7 @@ index 8d25fdc..bfb7626 100644
if (mm->map_count >= sysctl_max_map_count)
return -ENOMEM;
-@@ -2488,11 +2952,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2488,11 +2954,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
* work. This now handles partial unmappings.
* Jeremy Fitzhardinge <jeremy@goop.org>
*/
@@ -89119,7 +89119,7 @@ index 8d25fdc..bfb7626 100644
if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
return -EINVAL;
-@@ -2567,6 +3050,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
+@@ -2567,6 +3052,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
/* Fix up all other VM information */
remove_vma_list(mm, vma);
@@ -89128,7 +89128,7 @@ index 8d25fdc..bfb7626 100644
return 0;
}
-@@ -2575,6 +3060,13 @@ int vm_munmap(unsigned long start, size_t len)
+@@ -2575,6 +3062,13 @@ int vm_munmap(unsigned long start, size_t len)
int ret;
struct mm_struct *mm = current->mm;
@@ -89142,7 +89142,7 @@ index 8d25fdc..bfb7626 100644
down_write(&mm->mmap_sem);
ret = do_munmap(mm, start, len);
up_write(&mm->mmap_sem);
-@@ -2588,16 +3080,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
+@@ -2588,16 +3082,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
return vm_munmap(addr, len);
}
@@ -89159,7 +89159,7 @@ index 8d25fdc..bfb7626 100644
/*
* this is really a simplified "do_mmap". it only handles
* anonymous maps. eventually we may be able to do some
-@@ -2611,6 +3093,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2611,6 +3095,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
struct rb_node ** rb_link, * rb_parent;
pgoff_t pgoff = addr >> PAGE_SHIFT;
int error;
@@ -89167,7 +89167,7 @@ index 8d25fdc..bfb7626 100644
len = PAGE_ALIGN(len);
if (!len)
-@@ -2618,16 +3101,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2618,16 +3103,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
@@ -89199,7 +89199,7 @@ index 8d25fdc..bfb7626 100644
locked += mm->locked_vm;
lock_limit = rlimit(RLIMIT_MEMLOCK);
lock_limit >>= PAGE_SHIFT;
-@@ -2644,21 +3141,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2644,21 +3143,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
/*
* Clear old maps. this also does some error checking for us
*/
@@ -89224,7 +89224,7 @@ index 8d25fdc..bfb7626 100644
return -ENOMEM;
/* Can we just expand an old private anonymous mapping? */
-@@ -2672,7 +3168,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2672,7 +3170,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
*/
vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
if (!vma) {
@@ -89233,7 +89233,7 @@ index 8d25fdc..bfb7626 100644
return -ENOMEM;
}
-@@ -2686,9 +3182,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2686,9 +3184,10 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
vma_link(mm, vma, prev, rb_link, rb_parent);
out:
perf_event_mmap(vma);
@@ -89246,7 +89246,7 @@ index 8d25fdc..bfb7626 100644
return addr;
}
-@@ -2750,6 +3247,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2750,6 +3249,7 @@ void exit_mmap(struct mm_struct *mm)
while (vma) {
if (vma->vm_flags & VM_ACCOUNT)
nr_accounted += vma_pages(vma);
@@ -89254,7 +89254,7 @@ index 8d25fdc..bfb7626 100644
vma = remove_vma(vma);
}
vm_unacct_memory(nr_accounted);
-@@ -2766,6 +3264,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2766,6 +3266,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
struct vm_area_struct *prev;
struct rb_node **rb_link, *rb_parent;
@@ -89268,7 +89268,7 @@ index 8d25fdc..bfb7626 100644
/*
* The vm_pgoff of a purely anonymous vma should be irrelevant
* until its first write fault, when page's anon_vma and index
-@@ -2789,7 +3294,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2789,7 +3296,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
security_vm_enough_memory_mm(mm, vma_pages(vma)))
return -ENOMEM;
@@ -89290,7 +89290,7 @@ index 8d25fdc..bfb7626 100644
return 0;
}
-@@ -2809,6 +3328,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2809,6 +3330,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
struct mempolicy *pol;
bool faulted_in_anon_vma = true;
@@ -89299,7 +89299,7 @@ index 8d25fdc..bfb7626 100644
/*
* If anonymous vma has not yet been faulted, update new pgoff
* to match new location, to increase its chance of merging.
-@@ -2875,6 +3396,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2875,6 +3398,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
return NULL;
}
@@ -89339,7 +89339,7 @@ index 8d25fdc..bfb7626 100644
/*
* Return true if the calling process may expand its vm space by the passed
* number of pages
-@@ -2886,6 +3440,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
+@@ -2886,6 +3442,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
@@ -89347,7 +89347,7 @@ index 8d25fdc..bfb7626 100644
if (cur + npages > lim)
return 0;
return 1;
-@@ -2956,6 +3511,22 @@ int install_special_mapping(struct mm_struct *mm,
+@@ -2956,6 +3513,22 @@ int install_special_mapping(struct mm_struct *mm,
vma->vm_start = addr;
vma->vm_end = addr + len;