aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-12-19 14:51:07 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2012-01-03 09:54:37 +0000
commit8173ca0bea13655b9169ea5890c1182de48817e7 (patch)
treec76d19e763d39b5677ace48686037486ea75254b
parent11c2846ffc229832d539c16381c339eece3da97d (diff)
downloadaports-8173ca0bea13655b9169ea5890c1182de48817e7.tar.bz2
aports-8173ca0bea13655b9169ea5890c1182de48817e7.tar.xz
main/linux-grsec: upgrade to grsecurity-2.2.2-3.0.13
(cherry picked from commit a332fe4b61c0d63f9245ca7f4992f35c20293eb7)
-rw-r--r--main/linux-grsec/APKBUILD8
-rw-r--r--main/linux-grsec/grsecurity-2.2.2-3.0.13-unofficial.patch (renamed from main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch)103
2 files changed, 56 insertions, 55 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index f52c9d6d69..2044d6e1ee 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,9 +2,9 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=3.0.12
+pkgver=3.0.13
_kernver=3.0
-pkgrel=3
+pkgrel=0
pkgdesc="Linux kernel with grsecurity"
url=http://grsecurity.net
depends="mkinitfs linux-firmware"
@@ -142,8 +142,8 @@ dev() {
}
md5sums="398e95866794def22b12dfbc15ce89c0 linux-3.0.tar.bz2
-b3030035fcc87c55ede362a47113af5d patch-3.0.12.bz2
-a129184102c16a4ee39afe50cae43efd grsecurity-2.2.2-3.0.12-unofficial.patch
+bf47382f0c923b8dc2b5e8e456c59cc9 patch-3.0.13.bz2
+d5c9b286a5a947fa25ccd386e5cd2387 grsecurity-2.2.2-3.0.13-unofficial.patch
c41cf0ee9794f393423c6b2093072260 grsec-timblogiw-noconst.patch
ebb99ef6ad8cd2d9fd8f49d5c5849057 0001-ip_gre-dont-increase-dev-needed_headroom-on-a-live-d.patch
776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch
diff --git a/main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch b/main/linux-grsec/grsecurity-2.2.2-3.0.13-unofficial.patch
index 8fad8f4f85..a63a19122c 100644
--- a/main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch
+++ b/main/linux-grsec/grsecurity-2.2.2-3.0.13-unofficial.patch
@@ -158,7 +158,7 @@ index aa47be7..1fbd18f 100644
pcd. [PARIDE]
diff --git a/Makefile b/Makefile
-index 993fe05..8ddd85b 100644
+index 5ccc962..f6e640e 100644
--- a/Makefile
+++ b/Makefile
@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -708,7 +708,7 @@ index acca35a..f7debc1 100644
EXPORT_SYMBOL(__get_user_1);
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
-index 5e1e541..6af2d90 100644
+index 74ae833..8749ecb 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -28,7 +28,6 @@
@@ -719,7 +719,7 @@ index 5e1e541..6af2d90 100644
#include <linux/hw_breakpoint.h>
#include <asm/cacheflush.h>
-@@ -479,12 +478,6 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -482,12 +481,6 @@ unsigned long get_wchan(struct task_struct *p)
return 0;
}
@@ -15913,7 +15913,7 @@ index 42eb330..139955c 100644
return ret;
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
-index 9242436..753954d 100644
+index d4a705f..ef8f1a9 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -35,7 +35,7 @@ void (*pm_power_off)(void);
@@ -15925,7 +15925,7 @@ index 9242436..753954d 100644
enum reboot_type reboot_type = BOOT_ACPI;
int reboot_force;
-@@ -315,13 +315,17 @@ core_initcall(reboot_init);
+@@ -324,13 +324,17 @@ core_initcall(reboot_init);
extern const unsigned char machine_real_restart_asm[];
extern const u64 machine_real_restart_gdt[3];
@@ -15945,7 +15945,7 @@ index 9242436..753954d 100644
local_irq_disable();
/* Write zero to CMOS register number 0x0f, which the BIOS POST
-@@ -347,14 +351,14 @@ void machine_real_restart(unsigned int type)
+@@ -356,14 +360,14 @@ void machine_real_restart(unsigned int type)
boot)". This seems like a fairly standard thing that gets set by
REBOOT.COM programs, and the previous reset routine did this
too. */
@@ -15962,7 +15962,7 @@ index 9242436..753954d 100644
/* GDT[0]: GDT self-pointer */
lowmem_gdt[0] =
-@@ -365,7 +369,33 @@ void machine_real_restart(unsigned int type)
+@@ -374,7 +378,33 @@ void machine_real_restart(unsigned int type)
GDT_ENTRY(0x009b, restart_pa, 0xffff);
/* Jump to the identity-mapped low memory code */
@@ -15996,7 +15996,7 @@ index 9242436..753954d 100644
}
#ifdef CONFIG_APM_MODULE
EXPORT_SYMBOL(machine_real_restart);
-@@ -523,7 +553,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
+@@ -532,7 +562,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
* try to force a triple fault and then cycle between hitting the keyboard
* controller and doing that
*/
@@ -16005,7 +16005,7 @@ index 9242436..753954d 100644
{
int i;
int attempt = 0;
-@@ -647,13 +677,13 @@ void native_machine_shutdown(void)
+@@ -656,13 +686,13 @@ void native_machine_shutdown(void)
#endif
}
@@ -16021,7 +16021,7 @@ index 9242436..753954d 100644
{
printk("machine restart\n");
-@@ -662,7 +692,7 @@ static void native_machine_restart(char *__unused)
+@@ -671,7 +701,7 @@ static void native_machine_restart(char *__unused)
__machine_emergency_restart(0);
}
@@ -16030,7 +16030,7 @@ index 9242436..753954d 100644
{
/* stop other cpus and apics */
machine_shutdown();
-@@ -673,7 +703,7 @@ static void native_machine_halt(void)
+@@ -682,7 +712,7 @@ static void native_machine_halt(void)
stop_this_cpu(NULL);
}
@@ -16039,7 +16039,7 @@ index 9242436..753954d 100644
{
if (pm_power_off) {
if (!reboot_force)
-@@ -682,6 +712,7 @@ static void native_machine_power_off(void)
+@@ -691,6 +721,7 @@ static void native_machine_power_off(void)
}
/* a fallback in case there is no PM info available */
tboot_shutdown(TB_SHUTDOWN_HALT);
@@ -21109,10 +21109,10 @@ index ea30585..b5e1508 100644
return 0;
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
-index b499626..6fd1882 100644
+index f4f29b1..5cac4fb 100644
--- a/arch/x86/mm/highmem_32.c
+++ b/arch/x86/mm/highmem_32.c
-@@ -44,7 +44,10 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
+@@ -44,7 +44,11 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
BUG_ON(!pte_none(*(kmap_pte-idx)));
@@ -21120,9 +21120,10 @@ index b499626..6fd1882 100644
+ pax_open_kernel();
set_pte(kmap_pte-idx, mk_pte(page, prot));
+ pax_close_kernel();
++
+ arch_flush_lazy_mmu_mode();
return (void *)vaddr;
- }
diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
index f581a18..29efd37 100644
--- a/arch/x86/mm/hugetlbpage.c
@@ -26871,7 +26872,7 @@ index a365be0..a629755 100644
return -EINVAL;
}
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index 82db185..c935ce3 100644
+index 1367ced..f2ec98d 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -1372,7 +1372,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
@@ -26921,7 +26922,7 @@ index 82db185..c935ce3 100644
if (!num_clips != !clips_ptr) {
ret = -EINVAL;
-@@ -2270,7 +2270,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2274,7 +2274,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
out_resp->flags = property->flags;
if ((out_resp->count_values >= value_count) && value_count) {
@@ -26930,7 +26931,7 @@ index 82db185..c935ce3 100644
for (i = 0; i < value_count; i++) {
if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
ret = -EFAULT;
-@@ -2283,7 +2283,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2287,7 +2287,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
if (property->flags & DRM_MODE_PROP_ENUM) {
if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
copied = 0;
@@ -26939,7 +26940,7 @@ index 82db185..c935ce3 100644
list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
-@@ -2306,7 +2306,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2310,7 +2310,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
copied = 0;
blob_id_ptr = (uint32_t *)(unsigned long)out_resp->enum_blob_ptr;
@@ -26948,7 +26949,7 @@ index 82db185..c935ce3 100644
list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
-@@ -2367,7 +2367,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2371,7 +2371,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
struct drm_mode_get_blob *out_resp = data;
struct drm_property_blob *blob;
int ret = 0;
@@ -26957,7 +26958,7 @@ index 82db185..c935ce3 100644
if (!drm_core_check_feature(dev, DRIVER_MODESET))
return -EINVAL;
-@@ -2381,7 +2381,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2385,7 +2385,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
blob = obj_to_blob(obj);
if (out_resp->length == blob->length) {
@@ -27355,7 +27356,7 @@ index 4934cf8..52e8e83 100644
/* The actual obj->write_domain will be updated with
* pending_write_domain after we emit the accumulated flush for all
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index 9b1d669..d88e72c 100644
+index 3635647..1ad5700 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -473,7 +473,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
@@ -27376,7 +27377,7 @@ index 9b1d669..d88e72c 100644
if (IS_GEN6(dev))
bsd_usr_interrupt = GT_GEN6_BSD_USER_INTERRUPT;
-@@ -1226,7 +1226,7 @@ static irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+@@ -1227,7 +1227,7 @@ static irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
int ret = IRQ_NONE, pipe;
bool blc_event = false;
@@ -27385,7 +27386,7 @@ index 9b1d669..d88e72c 100644
iir = I915_READ(IIR);
-@@ -1735,7 +1735,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev)
+@@ -1736,7 +1736,7 @@ static void ironlake_irq_preinstall(struct drm_device *dev)
{
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
@@ -27394,7 +27395,7 @@ index 9b1d669..d88e72c 100644
INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
INIT_WORK(&dev_priv->error_work, i915_error_work_func);
-@@ -1899,7 +1899,7 @@ static void i915_driver_irq_preinstall(struct drm_device * dev)
+@@ -1900,7 +1900,7 @@ static void i915_driver_irq_preinstall(struct drm_device * dev)
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
int pipe;
@@ -27404,7 +27405,7 @@ index 9b1d669..d88e72c 100644
INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
INIT_WORK(&dev_priv->error_work, i915_error_work_func);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 853bddb..6afec46 100644
+index fed87d6..f594763 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1961,7 +1961,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
@@ -27777,10 +27778,10 @@ index 59d72d0..3621b94 100644
/*
* Asic structures
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
-index bf2b615..c821ec8 100644
+index 285acc4..f4d909f 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
-@@ -545,6 +545,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
+@@ -569,6 +569,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
struct radeon_gpio_rec gpio;
struct radeon_hpd hpd;
@@ -28157,7 +28158,7 @@ index e92298a..f68f2d6 100644
for (;;) {
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index 4f81d20..4b5f337 100644
+index 763797d..67a9f78 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1940,7 +1940,7 @@ static bool hid_ignore(struct hid_device *hdev)
@@ -34062,7 +34063,7 @@ index dd87e86..bc0148c 100644
}
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c
-index dccd863..8d35669 100644
+index f8c752e..28bf4fc 100644
--- a/drivers/oprofile/oprof.c
+++ b/drivers/oprofile/oprof.c
@@ -110,7 +110,7 @@ static void switch_worker(struct work_struct *work)
@@ -35444,10 +35445,10 @@ index 6888b2c..45befa1 100644
return errsts;
memset(arr, 0, sizeof(arr));
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index f97acff..0c53d1f 100644
+index 72ab1e6..ad69062 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
-@@ -1412,7 +1412,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
+@@ -1414,7 +1414,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
shost = sdev->host;
scsi_init_cmd_errh(cmd);
cmd->result = DID_NO_CONNECT << 16;
@@ -35456,7 +35457,7 @@ index f97acff..0c53d1f 100644
/*
* SCSI request completion path will do scsi_device_unbusy(),
-@@ -1438,9 +1438,9 @@ static void scsi_softirq_done(struct request *rq)
+@@ -1440,9 +1440,9 @@ static void scsi_softirq_done(struct request *rq)
INIT_LIST_HEAD(&cmd->eh_entry);
@@ -36155,10 +36156,10 @@ index 76d7485..ab8524a 100644
hcd->power_budget = 0; /* no limit */
diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c
-index e42ce9d..b3ee231 100644
+index 5c4b5d9..fdfc7bf1 100644
--- a/drivers/staging/usbip/vhci_rx.c
+++ b/drivers/staging/usbip/vhci_rx.c
-@@ -76,7 +76,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,
+@@ -77,7 +77,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,
if (!urb) {
pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
pr_info("max seqnum %d\n",
@@ -64929,10 +64930,10 @@ index 9b22d03..6295b62 100644
prev->next = info->next;
else
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index a9205e3..1c6f5c0 100644
+index 2043c08..ec81a69 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
-@@ -1391,7 +1391,7 @@ void hrtimer_peek_ahead_timers(void)
+@@ -1393,7 +1393,7 @@ void hrtimer_peek_ahead_timers(void)
local_irq_restore(flags);
}
@@ -64942,7 +64943,7 @@ index a9205e3..1c6f5c0 100644
hrtimer_peek_ahead_timers();
}
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
-index a8ce450..5519bce 100644
+index e6f1f24..6c19597 100644
--- a/kernel/jump_label.c
+++ b/kernel/jump_label.c
@@ -55,7 +55,9 @@ jump_label_sort_entries(struct jump_entry *start, struct jump_entry *stop)
@@ -64955,7 +64956,7 @@ index a8ce450..5519bce 100644
}
static void jump_label_update(struct jump_label_key *key, int enable);
-@@ -297,10 +299,12 @@ static void jump_label_invalidate_module_init(struct module *mod)
+@@ -298,10 +300,12 @@ static void jump_label_invalidate_module_init(struct module *mod)
struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
struct jump_entry *iter;
@@ -67906,7 +67907,7 @@ index ea5e1a9..8b8df07 100644
.clock_get = alarm_clock_get,
.timer_create = alarm_timer_create,
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
-index c7218d1..5f4ecc6 100644
+index 7a90d02..6d8585a 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -115,7 +115,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu)
@@ -67919,7 +67920,7 @@ index c7218d1..5f4ecc6 100644
cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
tick_broadcast_clear_oneshot(cpu);
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index 342408c..18c3098 100644
+index 5f45831..a62c75e 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -14,6 +14,7 @@
@@ -67930,7 +67931,7 @@ index 342408c..18c3098 100644
#include <linux/syscore_ops.h>
#include <linux/clocksource.h>
#include <linux/jiffies.h>
-@@ -361,6 +362,8 @@ int do_settimeofday(const struct timespec *tv)
+@@ -365,6 +366,8 @@ int do_settimeofday(const struct timespec *tv)
if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
return -EINVAL;
@@ -68180,10 +68181,10 @@ index 0731e81a..91f8a79 100644
struct dentry *d_tracer;
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
-index 3e2a7c9..665bb9a 100644
+index 2d04936..7d78f18 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
-@@ -1318,10 +1318,6 @@ static LIST_HEAD(ftrace_module_file_list);
+@@ -1317,10 +1317,6 @@ static LIST_HEAD(ftrace_module_file_list);
struct ftrace_module_file_ops {
struct list_head list;
struct module *mod;
@@ -68194,7 +68195,7 @@ index 3e2a7c9..665bb9a 100644
};
static struct ftrace_module_file_ops *
-@@ -1342,17 +1338,12 @@ trace_create_file_ops(struct module *mod)
+@@ -1341,17 +1337,12 @@ trace_create_file_ops(struct module *mod)
file_ops->mod = mod;
@@ -68218,7 +68219,7 @@ index 3e2a7c9..665bb9a 100644
list_add(&file_ops->list, &ftrace_module_file_list);
-@@ -1376,8 +1367,8 @@ static void trace_module_add_events(struct module *mod)
+@@ -1375,8 +1366,8 @@ static void trace_module_add_events(struct module *mod)
for_each_event(call, start, end) {
__trace_add_event_call(*call, mod,
@@ -68738,7 +68739,7 @@ index cc5acf9..fd56cc0 100644
/* if an huge pmd materialized from under us just retry later */
if (unlikely(pmd_trans_huge(*pmd)))
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index bfcf153..1eff489 100644
+index 2b57cd9..8c89c5e 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -2339,6 +2339,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
@@ -68769,7 +68770,7 @@ index bfcf153..1eff489 100644
/*
* Hugetlb_cow() should be called with page lock of the original hugepage held.
*/
-@@ -2440,6 +2461,11 @@ retry_avoidcopy:
+@@ -2442,6 +2463,11 @@ retry_avoidcopy:
make_huge_pte(vma, new_page, 1));
page_remove_rmap(old_page);
hugepage_add_new_anon_rmap(new_page, vma, address);
@@ -68781,7 +68782,7 @@ index bfcf153..1eff489 100644
/* Make the old page be freed below */
new_page = old_page;
mmu_notifier_invalidate_range_end(mm,
-@@ -2591,6 +2617,10 @@ retry:
+@@ -2593,6 +2619,10 @@ retry:
&& (vma->vm_flags & VM_SHARED)));
set_huge_pte_at(mm, address, ptep, new_pte);
@@ -68792,7 +68793,7 @@ index bfcf153..1eff489 100644
if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
/* Optimization, do the COW without a second fault */
ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page);
-@@ -2620,6 +2650,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2622,6 +2652,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
static DEFINE_MUTEX(hugetlb_instantiation_mutex);
struct hstate *h = hstate_vma(vma);
@@ -68803,7 +68804,7 @@ index bfcf153..1eff489 100644
ptep = huge_pte_offset(mm, address);
if (ptep) {
entry = huge_ptep_get(ptep);
-@@ -2631,6 +2665,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2633,6 +2667,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
VM_FAULT_SET_HINDEX(h - hstates);
}