aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/linux-grsec/APKBUILD14
-rw-r--r--main/linux-grsec/grsecurity-2.2.0-2.6.35.10-unofficial.patch (renamed from main/linux-grsec/grsecurity-2.2.0-2.6.35.9-unofficial.patch)388
-rw-r--r--main/linux-grsec/r8169-fix-rx-checksum-offload.patch62
3 files changed, 136 insertions, 328 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index 6cdffae656..a0535732d0 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,9 +2,9 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=2.6.35.9
+pkgver=2.6.35.10
_kernver=2.6.35
-pkgrel=6
+pkgrel=0
pkgdesc="Linux kernel with grsecurity"
url=http://grsecurity.net
depends="mkinitfs linux-firmware"
@@ -13,12 +13,11 @@ options="!strip"
_config=${config:-kernelconfig.${CARCH}}
install=
source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2
- ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2
- grsecurity-2.2.0-2.6.35.9-unofficial.patch
+ http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v${pkgver%.*}/patch-$pkgver.bz2
+ grsecurity-2.2.0-$pkgver-unofficial.patch
0001-xfrm-use-gre-key-as-flow-upper-protocol-info.patch
xfrm-fix-gre-key-endianess.patch
0004-arp-flush-arp-cache-on-device-change.patch
- r8169-fix-rx-checksum-offload.patch
r8169-add-gro-support.patch
0001-Staging-hv-fix-sleeping-while-atomic-issue.patch
@@ -148,12 +147,11 @@ firmware() {
}
md5sums="091abeb4684ce03d1d936851618687b6 linux-2.6.35.tar.bz2
-eca407cf4872ad77ae23adc8242389c4 patch-2.6.35.9.bz2
-bec8a242eb219c14ce45150a0155a5ac grsecurity-2.2.0-2.6.35.9-unofficial.patch
+0741b3219a009fdfc41c766416007fcf patch-2.6.35.10.bz2
+3855791bfc2ee4fff05fc3c783a3a477 grsecurity-2.2.0-2.6.35.10-unofficial.patch
eed5bd98c0a3b976891c897763eceff5 0001-xfrm-use-gre-key-as-flow-upper-protocol-info.patch
ea7a7eb2775b71ae5ef24d029a4905bd xfrm-fix-gre-key-endianess.patch
776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch
-0ccecafd4123dcad0b0cd7787553d734 r8169-fix-rx-checksum-offload.patch
139b39da44ecb577275be53d7d365949 r8169-add-gro-support.patch
648d8b477248f233c318a3b7a961febf 0001-Staging-hv-fix-sleeping-while-atomic-issue.patch
7cae2d1e1947fa57d7aaaf31c649471c 0004-staging-hv-fix-netvsc-sleeping-while-atomic.patch
diff --git a/main/linux-grsec/grsecurity-2.2.0-2.6.35.9-unofficial.patch b/main/linux-grsec/grsecurity-2.2.0-2.6.35.10-unofficial.patch
index 884091e1ed..bfdddfb8fd 100644
--- a/main/linux-grsec/grsecurity-2.2.0-2.6.35.9-unofficial.patch
+++ b/main/linux-grsec/grsecurity-2.2.0-2.6.35.10-unofficial.patch
@@ -166,7 +166,7 @@ index 2b2407d..4ebd036 100644
pcd. [PARIDE]
diff --git a/Makefile b/Makefile
-index 90ba786..2b577fd 100644
+index 6538501..6616857 100644
--- a/Makefile
+++ b/Makefile
@@ -230,8 +230,8 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -10832,7 +10832,7 @@ index d938871..1e97c91 100644
if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
-index 1d3cdda..351f83c 100644
+index 5384b04..0c28c59 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -484,7 +484,7 @@ static const struct dmi_system_id sw_any_bug_dmi_table[] = {
@@ -15502,7 +15502,7 @@ index 1eb7a4a..66513e00 100644
#define APIC_LVT_NUM 6
/* 14 is the version for Xeon and Pentium 8.4.8*/
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
-index 02a5603..ab3491b 100644
+index 9ca7032..36aa477 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2825,7 +2825,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
@@ -15527,7 +15527,7 @@ index 02a5603..ab3491b 100644
.disabled_by_bios = is_disabled,
.hardware_setup = svm_hardware_setup,
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 7d04388..1180545 100644
+index 39ac456..37d565b 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -654,7 +654,11 @@ static void reload_tss(void)
@@ -15612,7 +15612,7 @@ index 7d04388..1180545 100644
.disabled_by_bios = vmx_disabled_by_bios,
.hardware_setup = hardware_setup,
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index be92511..a2fce11 100644
+index eee5cdd..415d3fd 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -86,7 +86,7 @@ static void update_cr8_intercept(struct kvm_vcpu *vcpu);
@@ -15713,7 +15713,7 @@ index be92511..a2fce11 100644
return -EINVAL;
if (irqchip_in_kernel(vcpu->kvm))
return -ENXIO;
-@@ -4070,10 +4072,10 @@ void kvm_after_handle_nmi(struct kvm_vcpu *vcpu)
+@@ -4076,10 +4078,10 @@ void kvm_after_handle_nmi(struct kvm_vcpu *vcpu)
}
EXPORT_SYMBOL_GPL(kvm_after_handle_nmi);
@@ -20844,7 +20844,7 @@ index ac74869..fe8ff73 100644
-}
-__setup("vdso=", vdso_setup);
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 4d32089..78f1b61 100644
+index 25d787c..54e84e1 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -74,8 +74,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -20865,7 +20865,7 @@ index 4d32089..78f1b61 100644
end = start + __get_cpu_var(idt_desc).size + 1;
xen_mc_flush();
-@@ -1103,7 +1101,17 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1099,7 +1097,17 @@ asmlinkage void __init xen_start_kernel(void)
__userpte_alloc_gfp &= ~__GFP_HIGHMEM;
/* Work out if we support NX */
@@ -20884,7 +20884,7 @@ index 4d32089..78f1b61 100644
xen_setup_features();
-@@ -1134,13 +1142,6 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1130,13 +1138,6 @@ asmlinkage void __init xen_start_kernel(void)
machine_ops = xen_machine_ops;
@@ -20998,7 +20998,7 @@ index 58916af..9cb880b 100644
struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
int rearm = 0, budget = blk_iopoll_budget;
diff --git a/block/blk-map.c b/block/blk-map.c
-index 9083cf0..b2f51c9 100644
+index 30a7e51..3254ef2 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -54,7 +54,7 @@ static int __blk_rq_map_user(struct request_queue *q, struct request *rq,
@@ -21010,7 +21010,7 @@ index 9083cf0..b2f51c9 100644
bio = bio_map_user(q, NULL, uaddr, len, reading, gfp_mask);
else
bio = bio_copy_user(q, map_data, uaddr, len, reading, gfp_mask);
-@@ -297,7 +297,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
+@@ -299,7 +299,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
if (!len || !kbuf)
return -EINVAL;
@@ -21046,10 +21046,10 @@ index 358f80b..31b2333 100644
crypto_cipher_clear_flags(child, CRYPTO_TFM_REQ_MASK);
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
-index dc58402..042d6d3 100644
+index 68919e2..e4cdf22 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
-@@ -810,7 +810,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
+@@ -846,7 +846,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
}
static struct battery_file {
@@ -22936,7 +22936,7 @@ index b8578c3..41e5c92 100644
.scr_read = uli_scr_read,
.scr_write = uli_scr_write,
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
-index 4730c42..10633bf 100644
+index c51b8d2..1a305a3 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -115,32 +115,32 @@ static struct scsi_host_template svia_sht = {
@@ -23987,19 +23987,6 @@ index 702acce..c13b134 100644
wake_up(&zatm_vcc->tx_wait);
}
-diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
-index 8a549db..8403fd5 100644
---- a/drivers/block/pktcdvd.c
-+++ b/drivers/block/pktcdvd.c
-@@ -2368,7 +2368,7 @@ static void pkt_release_dev(struct pktcdvd_device *pd, int flush)
- pkt_shrink_pktlist(pd);
- }
-
--static struct pktcdvd_device *pkt_find_dev_from_minor(int dev_minor)
-+static struct pktcdvd_device *pkt_find_dev_from_minor(unsigned int dev_minor)
- {
- if (dev_minor >= MAX_WRITERS)
- return NULL;
diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
index 43412c0..3db9a62 100644
--- a/drivers/char/agp/frontend.c
@@ -24014,10 +24001,10 @@ index 43412c0..3db9a62 100644
client = agp_find_client_by_pid(reserve.pid);
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
-index 4187121..2ba214e 100644
+index e38fe2be..64355e5 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
-@@ -1055,7 +1055,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
+@@ -1056,7 +1056,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB),
ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB),
ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB),
@@ -24027,7 +24014,7 @@ index 4187121..2ba214e 100644
MODULE_DEVICE_TABLE(pci, agp_intel_pci_table);
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
-index a0a1829..ad5cbf0 100644
+index f8e7d89..5b17903 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -429,7 +429,7 @@ static int hpet_release(struct inode *inode, struct file *file)
@@ -24039,7 +24026,7 @@ index a0a1829..ad5cbf0 100644
static long hpet_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
-@@ -553,7 +553,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets,
+@@ -568,7 +568,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets,
}
static int
@@ -24048,7 +24035,7 @@ index a0a1829..ad5cbf0 100644
{
struct hpet_timer __iomem *timer;
struct hpet __iomem *hpet;
-@@ -596,11 +596,11 @@ hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg, int kernel)
+@@ -611,11 +611,11 @@ hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg, int kernel)
{
struct hpet_info info;
@@ -24062,7 +24049,7 @@ index a0a1829..ad5cbf0 100644
info.hi_flags =
readq(&timer->hpet_config) & Tn_PER_INT_CAP_MASK;
info.hi_hpet = hpetp->hp_which;
-@@ -998,7 +998,7 @@ static struct acpi_driver hpet_acpi_driver = {
+@@ -1015,7 +1015,7 @@ static struct acpi_driver hpet_acpi_driver = {
},
};
@@ -24216,7 +24203,7 @@ index 4f3f8c9..3708979 100644
intf->proc_dir = NULL;
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
-index ff68e7c..eff311f 100644
+index b1a3014..50af3c6 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -286,7 +286,7 @@ struct smi_info {
@@ -24240,7 +24227,7 @@ index ff68e7c..eff311f 100644
#define SI_MAX_PARMS 4
-@@ -3143,7 +3143,7 @@ static int try_smi_init(struct smi_info *new_smi)
+@@ -3151,7 +3151,7 @@ static int try_smi_init(struct smi_info *new_smi)
atomic_set(&new_smi->req_events, 0);
new_smi->run_to_completion = 0;
for (i = 0; i < SI_NUM_STATS; i++)
@@ -24906,10 +24893,10 @@ index 507441a..53d5b60 100644
* Initialize the console device. This is called *early*, so
* we can't necessarily depend on lots of kernel help here.
diff --git a/drivers/char/tty_ldisc.c b/drivers/char/tty_ldisc.c
-index 500e740..3720c43 100644
+index 236628f..235d0f9 100644
--- a/drivers/char/tty_ldisc.c
+++ b/drivers/char/tty_ldisc.c
-@@ -75,7 +75,7 @@ static void put_ldisc(struct tty_ldisc *ld)
+@@ -76,7 +76,7 @@ static void put_ldisc(struct tty_ldisc *ld)
if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
struct tty_ldisc_ops *ldo = ld->ops;
@@ -24918,7 +24905,7 @@ index 500e740..3720c43 100644
module_put(ldo->owner);
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
-@@ -109,7 +109,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
+@@ -111,7 +111,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
spin_lock_irqsave(&tty_ldisc_lock, flags);
tty_ldiscs[disc] = new_ldisc;
new_ldisc->num = disc;
@@ -24927,7 +24914,7 @@ index 500e740..3720c43 100644
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
return ret;
-@@ -137,7 +137,7 @@ int tty_unregister_ldisc(int disc)
+@@ -139,7 +139,7 @@ int tty_unregister_ldisc(int disc)
return -EINVAL;
spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -24936,7 +24923,7 @@ index 500e740..3720c43 100644
ret = -EBUSY;
else
tty_ldiscs[disc] = NULL;
-@@ -158,7 +158,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
+@@ -160,7 +160,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
if (ldops) {
ret = ERR_PTR(-EAGAIN);
if (try_module_get(ldops->owner)) {
@@ -24945,7 +24932,7 @@ index 500e740..3720c43 100644
ret = ldops;
}
}
-@@ -171,7 +171,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
+@@ -173,7 +173,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
unsigned long flags;
spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -24955,7 +24942,7 @@ index 500e740..3720c43 100644
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
}
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
-index cb19dbc..2107818 100644
+index 85cf230..156d86c 100644
--- a/drivers/char/vt_ioctl.c
+++ b/drivers/char/vt_ioctl.c
@@ -210,9 +210,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm, struct kbd_str
@@ -25354,7 +25341,7 @@ index 56f6642..98fbcce 100644
.detect = tfp410_detect,
.mode_valid = tfp410_mode_valid,
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index d396fe5..b17192b 100644
+index bdd39fb..d35c5d1 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1348,7 +1348,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
@@ -26236,7 +26223,7 @@ index f34b22b..04ac86f 100644
static int psaux_registered;
#endif
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
-index ed7ad74..902f63f 100644
+index 8c53926..5259b1e 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -183,7 +183,7 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = {
@@ -26248,7 +26235,7 @@ index ed7ad74..902f63f 100644
};
/*
-@@ -413,7 +413,7 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
+@@ -420,7 +420,7 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
},
},
@@ -26257,7 +26244,7 @@ index ed7ad74..902f63f 100644
};
static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
-@@ -487,7 +487,7 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
+@@ -494,7 +494,7 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1720"),
},
},
@@ -26266,7 +26253,7 @@ index ed7ad74..902f63f 100644
};
#ifdef CONFIG_PNP
-@@ -506,7 +506,7 @@ static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = {
+@@ -513,7 +513,7 @@ static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = {
DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
},
},
@@ -26275,7 +26262,7 @@ index ed7ad74..902f63f 100644
};
static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
-@@ -530,7 +530,7 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
+@@ -537,7 +537,7 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
DMI_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
},
},
@@ -26284,7 +26271,7 @@ index ed7ad74..902f63f 100644
};
#endif
-@@ -604,7 +604,7 @@ static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = {
+@@ -611,7 +611,7 @@ static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"),
},
},
@@ -26580,7 +26567,7 @@ index 9924ea2..498330c 100644
"start=%llu, len=%llu, dev_size=%llu",
dm_device_name(ti->table->md), bdevname(bdev, b),
diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 7476d95..1dc7c2f 100644
+index 7de96c2..d26e244 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -6352,7 +6352,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
@@ -27955,7 +27942,7 @@ index f4adba2..f151c41 100644
char *buf)
{
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
-index 449e890..4b93125 100644
+index 64ac30b..9a295d5 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -481,7 +481,16 @@ static const struct file_operations proc_bus_pci_dev_operations = {
@@ -28821,7 +28808,7 @@ index 6eda928..7e60f0e 100644
.read = seq_read,
.llseek = seq_lseek,
diff --git a/drivers/staging/samsung-laptop/samsung-laptop.c b/drivers/staging/samsung-laptop/samsung-laptop.c
-index eb44b60..80eeec6 100644
+index ac2bf11..701e8d5 100644
--- a/drivers/staging/samsung-laptop/samsung-laptop.c
+++ b/drivers/staging/samsung-laptop/samsung-laptop.c
@@ -269,7 +269,7 @@ static int update_status(struct backlight_device *bd)
@@ -30765,10 +30752,10 @@ index 42b60b0..57f6a31 100644
int err = simple_fill_super(sb, 0x42494e4d, bm_files);
if (!err)
diff --git a/fs/bio.c b/fs/bio.c
-index e7bf6ca..985bf52 100644
+index b3e0174..bfb5a81 100644
--- a/fs/bio.c
+++ b/fs/bio.c
-@@ -1213,7 +1213,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
+@@ -1232,7 +1232,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
const int read = bio_data_dir(bio) == READ;
struct bio_map_data *bmd = bio->bi_private;
int i;
@@ -31083,7 +31070,7 @@ index 473ca80..609ff0f 100644
kfree(p);
}
diff --git a/fs/compat.c b/fs/compat.c
-index af7c230..506b80e 100644
+index 34bf9fc..9969114 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -590,7 +590,7 @@ ssize_t compat_rw_copy_check_uvector(int type,
@@ -31095,22 +31082,7 @@ index af7c230..506b80e 100644
goto out;
if (nr_segs > fast_segs) {
ret = -ENOMEM;
-@@ -1433,14 +1433,12 @@ static int compat_copy_strings(int argc, compat_uptr_t __user *argv,
- if (!kmapped_page || kpos != (pos & PAGE_MASK)) {
- struct page *page;
-
--#ifdef CONFIG_STACK_GROWSUP
- ret = expand_stack_downwards(bprm->vma, pos);
- if (ret < 0) {
- /* We've exceed the stack rlimit. */
- ret = -E2BIG;
- goto out;
- }
--#endif
- ret = get_user_pages(current, bprm->mm, pos,
- 1, 1, 1, &page, NULL);
- if (ret <= 0) {
-@@ -1486,6 +1484,11 @@ int compat_do_execve(char * filename,
+@@ -1486,6 +1486,11 @@ int compat_do_execve(char * filename,
compat_uptr_t __user *envp,
struct pt_regs * regs)
{
@@ -31122,7 +31094,7 @@ index af7c230..506b80e 100644
struct linux_binprm *bprm;
struct file *file;
struct files_struct *displaced;
-@@ -1522,6 +1525,14 @@ int compat_do_execve(char * filename,
+@@ -1522,6 +1527,14 @@ int compat_do_execve(char * filename,
bprm->filename = filename;
bprm->interp = filename;
@@ -31137,7 +31109,7 @@ index af7c230..506b80e 100644
retval = bprm_mm_init(bprm);
if (retval)
goto out_file;
-@@ -1551,9 +1562,40 @@ int compat_do_execve(char * filename,
+@@ -1551,9 +1564,40 @@ int compat_do_execve(char * filename,
if (retval < 0)
goto out;
@@ -31179,7 +31151,7 @@ index af7c230..506b80e 100644
/* execve succeeded */
current->fs->in_exec = 0;
-@@ -1564,6 +1606,14 @@ int compat_do_execve(char * filename,
+@@ -1564,6 +1608,14 @@ int compat_do_execve(char * filename,
put_files_struct(displaced);
return retval;
@@ -31192,8 +31164,8 @@ index af7c230..506b80e 100644
+#endif
+
out:
- if (bprm->mm)
- mmput(bprm->mm);
+ if (bprm->mm) {
+ acct_arg_size(bprm, 0);
diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c
index 112e45a..b59845b 100644
--- a/fs/compat_binfmt_elf.c
@@ -31252,10 +31224,10 @@ index f994a7d..4dca551 100644
};
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index 8cd617b..726d087 100644
+index db9feb5..c50e2b9 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
-@@ -658,7 +658,7 @@ static int ecryptfs_readlink_lower(struct dentry *dentry, char **buf,
+@@ -663,7 +663,7 @@ static int ecryptfs_readlink_lower(struct dentry *dentry, char **buf,
old_fs = get_fs();
set_fs(get_ds());
rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
@@ -31264,7 +31236,7 @@ index 8cd617b..726d087 100644
lower_bufsiz);
set_fs(old_fs);
if (rc < 0)
-@@ -704,7 +704,7 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -709,7 +709,7 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd)
}
old_fs = get_fs();
set_fs(get_ds());
@@ -31273,7 +31245,7 @@ index 8cd617b..726d087 100644
set_fs(old_fs);
if (rc < 0) {
kfree(buf);
-@@ -719,7 +719,7 @@ out:
+@@ -724,7 +724,7 @@ out:
static void
ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr)
{
@@ -31296,7 +31268,7 @@ index 3745f61..b680a98 100644
i += packet_length_size;
if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
diff --git a/fs/exec.c b/fs/exec.c
-index 956bd37..b27c155 100644
+index dd8cabd..b2adde2 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -55,12 +55,24 @@
@@ -31333,7 +31305,7 @@ index 956bd37..b27c155 100644
MAY_READ | MAY_EXEC | MAY_OPEN);
putname(tmp);
error = PTR_ERR(file);
-@@ -162,18 +174,10 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
+@@ -177,18 +189,10 @@ struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
int write)
{
struct page *page;
@@ -31355,7 +31327,7 @@ index 956bd37..b27c155 100644
return NULL;
if (write) {
-@@ -246,6 +250,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
+@@ -263,6 +267,11 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
vma->vm_end = STACK_TOP_MAX;
vma->vm_start = vma->vm_end - PAGE_SIZE;
vma->vm_flags = VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
@@ -31367,7 +31339,7 @@ index 956bd37..b27c155 100644
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
INIT_LIST_HEAD(&vma->anon_vma_chain);
err = insert_vm_struct(mm, vma);
-@@ -255,6 +264,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
+@@ -272,6 +281,12 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
mm->stack_vm = mm->total_vm = 1;
up_write(&mm->mmap_sem);
bprm->p = vma->vm_end - sizeof(void *);
@@ -31380,7 +31352,7 @@ index 956bd37..b27c155 100644
return 0;
err:
up_write(&mm->mmap_sem);
-@@ -485,7 +500,7 @@ int copy_strings_kernel(int argc,char ** argv, struct linux_binprm *bprm)
+@@ -506,7 +521,7 @@ int copy_strings_kernel(int argc,char ** argv, struct linux_binprm *bprm)
int r;
mm_segment_t oldfs = get_fs();
set_fs(KERNEL_DS);
@@ -31389,7 +31361,7 @@ index 956bd37..b27c155 100644
set_fs(oldfs);
return r;
}
-@@ -515,7 +530,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -536,7 +551,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
unsigned long new_end = old_end - shift;
struct mmu_gather *tlb;
@@ -31399,7 +31371,7 @@ index 956bd37..b27c155 100644
/*
* ensure there are no vmas between where we want to go
-@@ -524,6 +540,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -545,6 +561,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
if (vma != find_vma(mm, new_start))
return -EFAULT;
@@ -31410,7 +31382,7 @@ index 956bd37..b27c155 100644
/*
* cover the whole range: [new_start, old_end)
*/
-@@ -619,8 +639,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -640,8 +660,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
bprm->exec -= stack_shift;
down_write(&mm->mmap_sem);
@@ -31439,7 +31411,7 @@ index 956bd37..b27c155 100644
/*
* Adjust stack execute permissions; explicitly enable for
* EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
-@@ -639,13 +679,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -660,13 +700,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
goto out_unlock;
BUG_ON(prev != vma);
@@ -31453,7 +31425,7 @@ index 956bd37..b27c155 100644
/* mprotect_fixup is overkill to remove the temporary stack flags */
vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
-@@ -685,7 +718,7 @@ struct file *open_exec(const char *name)
+@@ -706,7 +739,7 @@ struct file *open_exec(const char *name)
int err;
file = do_filp_open(AT_FDCWD, name,
@@ -31462,7 +31434,7 @@ index 956bd37..b27c155 100644
MAY_EXEC | MAY_OPEN);
if (IS_ERR(file))
goto out;
-@@ -722,7 +755,7 @@ int kernel_read(struct file *file, loff_t offset,
+@@ -743,7 +776,7 @@ int kernel_read(struct file *file, loff_t offset,
old_fs = get_fs();
set_fs(get_ds());
/* The cast to a user pointer is valid due to the set_fs() */
@@ -31471,7 +31443,7 @@ index 956bd37..b27c155 100644
set_fs(old_fs);
return result;
}
-@@ -1139,7 +1172,7 @@ int check_unsafe_exec(struct linux_binprm *bprm)
+@@ -1161,7 +1194,7 @@ int check_unsafe_exec(struct linux_binprm *bprm)
}
rcu_read_unlock();
@@ -31480,7 +31452,7 @@ index 956bd37..b27c155 100644
bprm->unsafe |= LSM_UNSAFE_SHARE;
} else {
res = -EAGAIN;
-@@ -1335,6 +1368,11 @@ int do_execve(char * filename,
+@@ -1357,6 +1390,11 @@ int do_execve(char * filename,
char __user *__user *envp,
struct pt_regs * regs)
{
@@ -31492,7 +31464,7 @@ index 956bd37..b27c155 100644
struct linux_binprm *bprm;
struct file *file;
struct files_struct *displaced;
-@@ -1371,6 +1409,18 @@ int do_execve(char * filename,
+@@ -1393,6 +1431,18 @@ int do_execve(char * filename,
bprm->filename = filename;
bprm->interp = filename;
@@ -31511,7 +31483,7 @@ index 956bd37..b27c155 100644
retval = bprm_mm_init(bprm);
if (retval)
goto out_file;
-@@ -1400,10 +1450,41 @@ int do_execve(char * filename,
+@@ -1422,10 +1472,41 @@ int do_execve(char * filename,
if (retval < 0)
goto out;
@@ -31554,7 +31526,7 @@ index 956bd37..b27c155 100644
/* execve succeeded */
current->fs->in_exec = 0;
-@@ -1414,6 +1495,14 @@ int do_execve(char * filename,
+@@ -1436,6 +1517,14 @@ int do_execve(char * filename,
put_files_struct(displaced);
return retval;
@@ -31567,9 +31539,9 @@ index 956bd37..b27c155 100644
+#endif
+
out:
- if (bprm->mm)
- mmput (bprm->mm);
-@@ -1577,6 +1666,217 @@ out:
+ if (bprm->mm) {
+ acct_arg_size(bprm, 0);
+@@ -1601,6 +1690,217 @@ out:
return ispipe;
}
@@ -31787,7 +31759,7 @@ index 956bd37..b27c155 100644
static int zap_process(struct task_struct *start, int exit_code)
{
struct task_struct *t;
-@@ -1787,17 +2087,17 @@ static void wait_for_dump_helpers(struct file *file)
+@@ -1811,17 +2111,17 @@ static void wait_for_dump_helpers(struct file *file)
pipe = file->f_path.dentry->d_inode->i_pipe;
pipe_lock(pipe);
@@ -31810,7 +31782,7 @@ index 956bd37..b27c155 100644
pipe_unlock(pipe);
}
-@@ -1905,6 +2205,10 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
+@@ -1929,6 +2229,10 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
*/
clear_thread_flag(TIF_SIGPENDING);
@@ -33024,7 +32996,7 @@ index 099b351..f4966db 100644
void nfs_fattr_init(struct nfs_fattr *fattr)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index 330a3c9..250c8af 100644
+index f7b7698..9ff1136 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1166,7 +1166,7 @@ static int _nfs4_do_open_reclaim(struct nfs_open_context *ctx, struct nfs4_state
@@ -33243,7 +33215,7 @@ index 330a3c9..250c8af 100644
int err;
do {
err = nfs4_handle_exception(NFS_SERVER(inode),
-@@ -3745,7 +3745,7 @@ out:
+@@ -3742,7 +3742,7 @@ out:
int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync)
{
struct nfs_server *server = NFS_SERVER(inode);
@@ -33252,7 +33224,7 @@ index 330a3c9..250c8af 100644
int err;
do {
err = _nfs4_proc_delegreturn(inode, cred, stateid, issync);
-@@ -3818,7 +3818,7 @@ out:
+@@ -3815,7 +3815,7 @@ out:
static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock *request)
{
@@ -33261,7 +33233,7 @@ index 330a3c9..250c8af 100644
int err;
do {
-@@ -4232,7 +4232,7 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
+@@ -4229,7 +4229,7 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request)
{
struct nfs_server *server = NFS_SERVER(state->inode);
@@ -33270,7 +33242,7 @@ index 330a3c9..250c8af 100644
int err;
do {
-@@ -4250,7 +4250,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
+@@ -4247,7 +4247,7 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request
static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request)
{
struct nfs_server *server = NFS_SERVER(state->inode);
@@ -33279,7 +33251,7 @@ index 330a3c9..250c8af 100644
int err;
err = nfs4_set_lock_state(state, request);
-@@ -4315,7 +4315,7 @@ out:
+@@ -4312,7 +4312,7 @@ out:
static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock *request)
{
@@ -33288,7 +33260,7 @@ index 330a3c9..250c8af 100644
int err;
do {
-@@ -4375,7 +4375,7 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request)
+@@ -4372,7 +4372,7 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request)
int nfs4_lock_delegation_recall(struct nfs4_state *state, struct file_lock *fl)
{
struct nfs_server *server = NFS_SERVER(state->inode);
@@ -33656,7 +33628,7 @@ index 5463266..fbbbe4c 100644
if (user != (uid_t) -1) {
newattrs.ia_valid |= ATTR_UID;
diff --git a/fs/pipe.c b/fs/pipe.c
-index 37eb1eb..119351f 100644
+index a58d7ee..e17c9f2 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -420,9 +420,9 @@ redo:
@@ -34948,7 +34920,7 @@ index 00b2909..2ace383 100644
__putname(s);
}
diff --git a/fs/splice.c b/fs/splice.c
-index efdbfec..3eac071 100644
+index 188f61a..c918341 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -186,7 +186,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
@@ -35021,7 +34993,7 @@ index efdbfec..3eac071 100644
current->splice_pipe = pipe;
}
-@@ -1769,9 +1769,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1757,9 +1757,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
ret = -ERESTARTSYS;
break;
}
@@ -35033,7 +35005,7 @@ index efdbfec..3eac071 100644
if (flags & SPLICE_F_NONBLOCK) {
ret = -EAGAIN;
break;
-@@ -1803,7 +1803,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1791,7 +1791,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
pipe_lock(pipe);
while (pipe->nrbufs >= pipe->buffers) {
@@ -35042,7 +35014,7 @@ index efdbfec..3eac071 100644
send_sig(SIGPIPE, current, 0);
ret = -EPIPE;
break;
-@@ -1816,9 +1816,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1804,9 +1804,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
ret = -ERESTARTSYS;
break;
}
@@ -35054,7 +35026,7 @@ index efdbfec..3eac071 100644
}
pipe_unlock(pipe);
-@@ -1854,14 +1854,14 @@ retry:
+@@ -1842,14 +1842,14 @@ retry:
pipe_double_lock(ipipe, opipe);
do {
@@ -35071,7 +35043,7 @@ index efdbfec..3eac071 100644
break;
/*
-@@ -1961,7 +1961,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1949,7 +1949,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
pipe_double_lock(ipipe, opipe);
do {
@@ -35080,7 +35052,7 @@ index efdbfec..3eac071 100644
send_sig(SIGPIPE, current, 0);
if (!ret)
ret = -EPIPE;
-@@ -2006,7 +2006,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1994,7 +1994,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
* return EAGAIN if we have the potential of some data in the
* future, otherwise just return 0
*/
@@ -45427,10 +45399,10 @@ index 817b237..62c10bc 100644
#undef __HANDLE_ITEM
};
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
-index c809e28..538e4bc 100644
+index 074b620..c8823dc 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
-@@ -87,6 +87,7 @@ struct linux_binfmt {
+@@ -92,6 +92,7 @@ struct linux_binfmt {
int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
int (*load_shlib)(struct file *);
int (*core_dump)(struct coredump_params *cprm);
@@ -45439,7 +45411,7 @@ index c809e28..538e4bc 100644
int hasvdso;
};
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 09a8402..1cc074d 100644
+index 7b35803..e46aa64 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1331,20 +1331,20 @@ static inline int blk_integrity_rq(struct request *rq)
@@ -47531,7 +47503,7 @@ index 5171639..7cf4235 100644
/** create a directory */
struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
-index 4457969..9013f4e 100644
+index bb27d7e..829e8c5 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -45,9 +45,9 @@ struct pipe_buffer {
@@ -49176,60 +49148,6 @@ index f4c1a3a..8dcf3cc 100644
if (err < 0)
goto out;
-diff --git a/ipc/compat.c b/ipc/compat.c
-index 9dc2c7d..845a287 100644
---- a/ipc/compat.c
-+++ b/ipc/compat.c
-@@ -241,6 +241,8 @@ long compat_sys_semctl(int first, int second, int third, void __user *uptr)
- struct semid64_ds __user *up64;
- int version = compat_ipc_parse_version(&third);
-
-+ memset(&s64, 0, sizeof(s64));
-+
- if (!uptr)
- return -EINVAL;
- if (get_user(pad, (u32 __user *) uptr))
-@@ -421,6 +423,8 @@ long compat_sys_msgctl(int first, int second, void __user *uptr)
- int version = compat_ipc_parse_version(&second);
- void __user *p;
-
-+ memset(&m64, 0, sizeof(m64));
-+
- switch (second & (~IPC_64)) {
- case IPC_INFO:
- case IPC_RMID:
-@@ -594,6 +598,8 @@ long compat_sys_shmctl(int first, int second, void __user *uptr)
- int err, err2;
- int version = compat_ipc_parse_version(&second);
-
-+ memset(&s64, 0, sizeof(s64));
-+
- switch (second & (~IPC_64)) {
- case IPC_RMID:
- case SHM_LOCK:
-diff --git a/ipc/compat_mq.c b/ipc/compat_mq.c
-index d8d1e9f..380ea4f 100644
---- a/ipc/compat_mq.c
-+++ b/ipc/compat_mq.c
-@@ -53,6 +53,9 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name,
- void __user *p = NULL;
- if (u_attr && oflag & O_CREAT) {
- struct mq_attr attr;
-+
-+ memset(&attr, 0, sizeof(attr));
-+
- p = compat_alloc_user_space(sizeof(attr));
- if (get_compat_mq_attr(&attr, u_attr) ||
- copy_to_user(p, &attr, sizeof(attr)))
-@@ -127,6 +130,8 @@ asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes,
- struct mq_attr __user *p = compat_alloc_user_space(2 * sizeof(*p));
- long ret;
-
-+ memset(&mqstat, 0, sizeof(mqstat));
-+
- if (u_mqstat) {
- if (get_compat_mq_attr(&mqstat, u_mqstat) ||
- copy_to_user(p, &mqstat, sizeof(mqstat)))
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index c93fd3f..1e684a5 100644
--- a/ipc/mqueue.c
@@ -49256,7 +49174,7 @@ index 40a8f46..0e0d49b 100644
out.sem_otime = in->sem_otime;
diff --git a/ipc/shm.c b/ipc/shm.c
-index 52ed77e..bd734e4 100644
+index b427380..3516324 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
@@ -49289,16 +49207,7 @@ index 52ed77e..bd734e4 100644
shp->shm_segsz = size;
shp->shm_nattch = 0;
shp->shm_file = file;
-@@ -473,6 +489,8 @@ static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_
- {
- struct shmid_ds out;
-
-+ memset(&out, 0, sizeof(out));
-+
- ipc64_perm_to_ipc_perm(&in->shm_perm, &out.shm_perm);
- out.shm_segsz = in->shm_segsz;
- out.shm_atime = in->shm_atime;
-@@ -877,9 +895,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+@@ -878,9 +894,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (err)
goto out_unlock;
@@ -49473,7 +49382,7 @@ index ebe4a28..19a35f3 100644
#ifdef CONFIG_MODULE_UNLOAD
{
diff --git a/kernel/exit.c b/kernel/exit.c
-index ac90425..bfa06b8 100644
+index d1e6789..db62916 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -56,6 +56,10 @@
@@ -49546,7 +49455,7 @@ index ac90425..bfa06b8 100644
/*
* If we were started as result of loading a module, close all of the
* user space pages. We don't need them, and if we didn't close them
-@@ -960,6 +988,9 @@ NORET_TYPE void do_exit(long code)
+@@ -969,6 +997,9 @@ NORET_TYPE void do_exit(long code)
tsk->exit_code = code;
taskstats_exit(tsk, group_dead);
@@ -50813,7 +50722,7 @@ index 9829646..47f2b35 100644
/*
* At the hard limit, we just die.
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index aa9e916..6d80d38 100644
+index 684463e..21353fb 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -50,14 +50,14 @@ enum {
@@ -50887,7 +50796,7 @@ index 71ae290..3ab7c83 100644
/*
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
-index f37cb7d..01a2097 100644
+index b0f28dd..d380af8 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -30,13 +30,13 @@ const char *const pm_states[PM_SUSPEND_MAX] = {
@@ -51066,7 +50975,7 @@ index a960481..d373438 100644
WARN_ON(pendowner->pi_blocked_on->lock != lock);
diff --git a/kernel/sched.c b/kernel/sched.c
-index 05b40f8..b62e96c 100644
+index 837f480..b9c779e 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4259,6 +4259,8 @@ int can_nice(const struct task_struct *p, const int nice)
@@ -51096,7 +51005,7 @@ index 05b40f8..b62e96c 100644
/* can't set/change the rt policy */
if (policy != p->policy && !rlim_rtprio)
return -EPERM;
-@@ -6581,7 +6585,7 @@ static void init_sched_groups_power(int cpu, struct sched_domain *sd)
+@@ -6593,7 +6597,7 @@ static void init_sched_groups_power(int cpu, struct sched_domain *sd)
long power;
int weight;
@@ -51909,7 +51818,7 @@ index fb34977..f5db621 100644
return -ENOMEM;
memcpy(buf, s->from, s->to - s->from);
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
-index 05da38b..e0358eb 100644
+index 5f0ed4b..d0d657d 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -80,7 +80,7 @@ struct radix_tree_preload {
@@ -51919,7 +51828,7 @@ index 05da38b..e0358eb 100644
-static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, };
+static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads);
- static inline gfp_t root_gfp_mask(struct radix_tree_root *root)
+ static inline void *ptr_to_indirect(void *ptr)
{
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index b8a2f54..a383ff5 100644
@@ -51992,10 +51901,10 @@ index 142c84a..59d8f7c 100644
return count;
}
diff --git a/mm/filemap.c b/mm/filemap.c
-index 20e5642..daadba4 100644
+index 183d2d4..d5c67db 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -1640,7 +1640,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
+@@ -1637,7 +1637,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
struct address_space *mapping = file->f_mapping;
if (!mapping->a_ops->readpage)
@@ -52004,7 +51913,7 @@ index 20e5642..daadba4 100644
file_accessed(file);
vma->vm_ops = &generic_file_vm_ops;
vma->vm_flags |= VM_CAN_NONLINEAR;
-@@ -2036,6 +2036,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
+@@ -2033,6 +2033,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
*pos = i_size_read(inode);
if (limit != RLIM_INFINITY) {
@@ -52872,7 +52781,7 @@ index 7550758..3f21de3 100644
* Make sure the vDSO gets into every core dump.
* Dumping its contents makes post-mortem fully interpretable later
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 5bc0a96..cb70aac 100644
+index 407cda2..a40f5d1 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -642,6 +642,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
@@ -54325,7 +54234,7 @@ index 3a94362..b34ead4 100644
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
diff --git a/mm/mprotect.c b/mm/mprotect.c
-index 2d1bf7c..13d159a 100644
+index 4c51338..90cc8c4 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -23,10 +23,16 @@
@@ -54490,7 +54399,7 @@ index 2d1bf7c..13d159a 100644
if (vma_wants_writenotify(vma)) {
vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED);
-@@ -237,6 +351,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -238,6 +352,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
end = start + len;
if (end <= start)
return -ENOMEM;
@@ -54508,7 +54417,7 @@ index 2d1bf7c..13d159a 100644
if (!arch_validate_prot(prot))
return -EINVAL;
-@@ -244,7 +369,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -245,7 +370,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
/*
* Does the application expect PROT_READ to imply PROT_EXEC:
*/
@@ -54517,7 +54426,7 @@ index 2d1bf7c..13d159a 100644
prot |= PROT_EXEC;
vm_flags = calc_vm_prot_bits(prot);
-@@ -276,6 +401,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -277,6 +402,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
if (start > vma->vm_start)
prev = vma;
@@ -54529,7 +54438,7 @@ index 2d1bf7c..13d159a 100644
for (nstart = start ; ; ) {
unsigned long newflags;
-@@ -285,6 +415,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -286,6 +416,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
/* newflags >> 4 shift VM_MAY% in place of VM_% */
if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) {
@@ -54545,9 +54454,9 @@ index 2d1bf7c..13d159a 100644
goto out;
}
@@ -300,6 +438,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+ error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
if (error)
goto out;
- perf_event_mmap(vma);
+
+ track_exec_limit(current->mm, nstart, tmp, vm_flags);
+
@@ -54663,7 +54572,7 @@ index cde56ee..a090e6d 100644
out:
if (ret & ~PAGE_MASK)
diff --git a/mm/nommu.c b/mm/nommu.c
-index e48b38c..eca83ab 100644
+index 3e18548..93b623d 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -67,7 +67,6 @@ int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */
@@ -54699,10 +54608,10 @@ index e48b38c..eca83ab 100644
new->vm_region = region;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index f7cc624..3aa1b1c 100644
+index 2b085d5..22d53f5 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -642,6 +642,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -647,6 +647,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
int i;
int bad = 0;
@@ -54713,7 +54622,7 @@ index f7cc624..3aa1b1c 100644
trace_mm_page_free_direct(page, order);
kmemcheck_free_shadow(page, order);
-@@ -660,6 +664,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -665,6 +669,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
debug_check_no_obj_freed(page_address(page),
PAGE_SIZE << order);
}
@@ -54726,7 +54635,7 @@ index f7cc624..3aa1b1c 100644
arch_free_page(page, order);
kernel_map_pages(page, 1 << order, 0);
-@@ -774,8 +784,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
+@@ -779,8 +789,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
arch_alloc_page(page, order);
kernel_map_pages(page, 1 << order, 1);
@@ -54737,7 +54646,7 @@ index f7cc624..3aa1b1c 100644
if (order && (gfp_flags & __GFP_COMP))
prep_compound_page(page, order);
-@@ -3986,7 +3998,7 @@ static void __init setup_usemap(struct pglist_data *pgdat,
+@@ -3991,7 +4003,7 @@ static void __init setup_usemap(struct pglist_data *pgdat,
zone->pageblock_flags = alloc_bootmem_node(pgdat, usemapsize);
}
#else
@@ -55919,7 +55828,7 @@ index 59ca00e..8a19dea 100644
ret = -EFAULT;
break;
diff --git a/net/core/dev.c b/net/core/dev.c
-index a7054e8..52e7eb5 100644
+index d7d352b..ddef323 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2551,7 +2551,7 @@ int netif_rx_ni(struct sk_buff *skb)
@@ -56738,7 +56647,7 @@ index 43040e9..3f64a40 100644
sk_rmem_alloc_get(s),
sk_wmem_alloc_get(s),
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
-index 1a9e2da..323cb22 100644
+index a9f8947..6cbca3e 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -649,7 +649,7 @@ struct ieee80211_local {
@@ -56809,10 +56718,10 @@ index 50deb01..d2f72d6 100644
ieee80211_stop_device(local);
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index 52f15fe..590a54a 100644
+index cd36d49..e40db43 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -148,7 +148,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
+@@ -149,7 +149,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
local->hw.conf.power_level = power;
}
@@ -56835,10 +56744,10 @@ index 75202b2..67b822c 100644
local->suspended = true;
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
-index 6d0bd19..d20bc54 100644
+index 68fc9c4..39b6583 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
-@@ -355,7 +355,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
+@@ -358,7 +358,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
ASSERT_RTNL();
@@ -57156,7 +57065,7 @@ index ca44917..0c26949 100644
to += addrlen;
cnt++;
diff --git a/net/socket.c b/net/socket.c
-index 367d547..94853e7 100644
+index 166ad32..b12782a 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -88,6 +88,7 @@
@@ -57449,7 +57358,7 @@ index 617bea4..dae3c79 100644
0,
s->sk_state == TCP_LISTEN ? __SO_ACCEPTCON : 0,
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index 8f0d97d..5743bb6 100644
+index 55b1101..c1868df 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -50,7 +50,7 @@
@@ -57498,43 +57407,6 @@ index 8f5116f..7f7c76b 100644
err = handler(dev, info, (union iwreq_data *) iwp, extra);
iwp->length += essid_compat;
-diff --git a/net/x25/x25_facilities.c b/net/x25/x25_facilities.c
-index 771bab0..3a8c4c4 100644
---- a/net/x25/x25_facilities.c
-+++ b/net/x25/x25_facilities.c
-@@ -134,15 +134,15 @@ int x25_parse_facilities(struct sk_buff *skb, struct x25_facilities *facilities,
- case X25_FAC_CLASS_D:
- switch (*p) {
- case X25_FAC_CALLING_AE:
-- if (p[1] > X25_MAX_DTE_FACIL_LEN)
-- break;
-+ if (p[1] > X25_MAX_DTE_FACIL_LEN || p[1] <= 1)
-+ return 0;
- dte_facs->calling_len = p[2];
- memcpy(dte_facs->calling_ae, &p[3], p[1] - 1);
- *vc_fac_mask |= X25_MASK_CALLING_AE;
- break;
- case X25_FAC_CALLED_AE:
-- if (p[1] > X25_MAX_DTE_FACIL_LEN)
-- break;
-+ if (p[1] > X25_MAX_DTE_FACIL_LEN || p[1] <= 1)
-+ return 0;
- dte_facs->called_len = p[2];
- memcpy(dte_facs->called_ae, &p[3], p[1] - 1);
- *vc_fac_mask |= X25_MASK_CALLED_AE;
-diff --git a/net/x25/x25_in.c b/net/x25/x25_in.c
-index 6317896..f729f02 100644
---- a/net/x25/x25_in.c
-+++ b/net/x25/x25_in.c
-@@ -119,6 +119,8 @@ static int x25_state1_machine(struct sock *sk, struct sk_buff *skb, int frametyp
- &x25->vc_facil_mask);
- if (len > 0)
- skb_pull(skb, len);
-+ else
-+ return -1;
- /*
- * Copy any Call User Data.
- */
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index a7ec5a8..48e43e9 100644
--- a/net/xfrm/xfrm_policy.c
@@ -58534,10 +58406,10 @@ index 91852e4..be6fd43 100644
mutex_unlock(&onyx->mutex);
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
-index 5c8c7df..c68b2f0 100644
+index aed06c9..82cdab7 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
-@@ -2966,8 +2966,8 @@ static void snd_pcm_oss_proc_done(struct snd_pcm *pcm)
+@@ -2969,8 +2969,8 @@ static void snd_pcm_oss_proc_done(struct snd_pcm *pcm)
}
}
#else /* !CONFIG_SND_VERBOSE_PROCFS */
@@ -58992,7 +58864,7 @@ index 2fc5396..33ed94e 100644
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
-index 4677492..fd2b7ab 100644
+index ebfa1f8..882debe 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -444,7 +444,7 @@ static DEFINE_PCI_DEVICE_TABLE(snd_intel8x0_ids) = {
@@ -59004,7 +58876,7 @@ index 4677492..fd2b7ab 100644
};
MODULE_DEVICE_TABLE(pci, snd_intel8x0_ids);
-@@ -2135,7 +2135,7 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
+@@ -2141,7 +2141,7 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
.type = AC97_TUNE_HP_ONLY
},
#endif
diff --git a/main/linux-grsec/r8169-fix-rx-checksum-offload.patch b/main/linux-grsec/r8169-fix-rx-checksum-offload.patch
deleted file mode 100644
index d979caac63..0000000000
--- a/main/linux-grsec/r8169-fix-rx-checksum-offload.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From adea1ac7effbddbe60a9de6d63462bfe79289e59 Mon Sep 17 00:00:00 2001
-From: Eric Dumazet <eric.dumazet@gmail.com>
-Date: Sun, 5 Sep 2010 20:04:05 -0700
-Subject: [PATCH] r8169: fix rx checksum offload
-
-While porting GRO to r8169, I found this driver has a bug in its rx
-path.
-
-All skbs given to network stack had their ip_summed set to
-CHECKSUM_NONE, while hardware said they had correct TCP/UDP checksums.
-
-The reason is driver sets skb->ip_summed on the original skb before the
-copy eventually done by copybreak. The fresh skb gets the ip_summed =
-CHECKSUM_NONE value, forcing network stack to recompute checksum, and
-preventing my GRO patch to work.
-
-Fix is to make the ip_summed setting after skb copy.
-
-Note : rx_copybreak current value is 16383, so all frames are copied...
-
-Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
-Acked-by: Francois Romieu <romieu@fr.zoreil.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/r8169.c | 6 ++----
- 1 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
-index 07b3fb5..56a11e2 100644
---- a/drivers/net/r8169.c
-+++ b/drivers/net/r8169.c
-@@ -4450,9 +4450,8 @@ static inline int rtl8169_fragmented_frame(u32 status)
- return (status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag);
- }
-
--static inline void rtl8169_rx_csum(struct sk_buff *skb, struct RxDesc *desc)
-+static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
- {
-- u32 opts1 = le32_to_cpu(desc->opts1);
- u32 status = opts1 & RxProtoMask;
-
- if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
-@@ -4546,8 +4545,6 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
- continue;
- }
-
-- rtl8169_rx_csum(skb, desc);
--
- if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) {
- pci_dma_sync_single_for_device(pdev, addr,
- pkt_size, PCI_DMA_FROMDEVICE);
-@@ -4558,6 +4555,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
- tp->Rx_skbuff[entry] = NULL;
- }
-
-+ rtl8169_rx_csum(skb, status);
- skb_put(skb, pkt_size);
- skb->protocol = eth_type_trans(skb, dev);
-
---
-1.7.2.3
-