diff options
-rw-r--r-- | main/linux-grsec/APKBUILD | 14 | ||||
-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.patch | 62 |
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 - |