summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-05-20 10:35:36 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-05-20 10:35:36 +0000
commita06f245009bedc8a7564225f7844c316ea6dd7f8 (patch)
treefd514bd2bb46645ac65b3cbdefdd319f315e1c54
parent13e7303be19a003b85e73795409e1bcb7bfa9666 (diff)
downloadaports-a06f245009bedc8a7564225f7844c316ea6dd7f8.tar.bz2
aports-a06f245009bedc8a7564225f7844c316ea6dd7f8.tar.xz
main/linux-grsec: upgrade to 3.4.46
-rw-r--r--main/linux-grsec/APKBUILD8
-rw-r--r--main/linux-grsec/grsecurity-2.9.1-3.4.46-0.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.4.45-0.patch)192
-rw-r--r--main/linux-grsec/r8169-fix-vlan-tag-reordering.patch73
3 files changed, 99 insertions, 174 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index 2bcb26fa9..c6918bd4d 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,7 +2,7 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=3.4.45
+pkgver=3.4.46
_kernver=3.4
pkgrel=0
pkgdesc="Linux kernel with grsecurity"
@@ -21,7 +21,6 @@ source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
intel_idle.patch
r8169-num-rx-desc.patch
- r8169-fix-vlan-tag-reordering.patch
kernelconfig.x86
kernelconfig.x86_64
@@ -144,12 +143,11 @@ dev() {
}
md5sums="967f72983655e2479f951195953e8480 linux-3.4.tar.xz
-adb183c04b48eb1276abcae46858dc29 patch-3.4.45.xz
-df2f69cbe183fd07db7d7520659406a1 grsecurity-2.9.1-3.4.45-0.patch
+e1d3a755f848fd62a568442721a612b9 patch-3.4.46.xz
+4bb10e5e64a6de50610052fd49112651 grsecurity-2.9.1-3.4.46-0.patch
776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch
cb6fcd6e966e73c87a839c4c0183f81f 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch
d2f7ba780ff7567c21381428264d7fdd intel_idle.patch
daf2cbb558588c49c138fe9ca2482b64 r8169-num-rx-desc.patch
-44a37e1289e1056300574848aea8bd31 r8169-fix-vlan-tag-reordering.patch
50a13359236dbd676fa355f0b4fd27ff kernelconfig.x86
c402f52babc729d1280c1677075aa0d7 kernelconfig.x86_64"
diff --git a/main/linux-grsec/grsecurity-2.9.1-3.4.45-0.patch b/main/linux-grsec/grsecurity-2.9.1-3.4.46-0.patch
index 043f0de09..cc2fc5634 100644
--- a/main/linux-grsec/grsecurity-2.9.1-3.4.45-0.patch
+++ b/main/linux-grsec/grsecurity-2.9.1-3.4.46-0.patch
@@ -269,7 +269,7 @@ index 88fd7f5..b318a78 100644
==============================================================
diff --git a/Makefile b/Makefile
-index 0ec4a35..f4096ca 100644
+index 3d88eb8..872526a 100644
--- a/Makefile
+++ b/Makefile
@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -20821,7 +20821,7 @@ index e334389..6839087 100644
local_irq_disable();
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 4ff0ab9..fbab291 100644
+index 90f5c0e..bf2f7d4 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1303,7 +1303,11 @@ static void reload_tss(void)
@@ -20881,7 +20881,7 @@ index 4ff0ab9..fbab291 100644
rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
-@@ -6180,6 +6194,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6186,6 +6200,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
"jmp .Lkvm_vmx_return \n\t"
".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
".Lkvm_vmx_return: "
@@ -20894,7 +20894,7 @@ index 4ff0ab9..fbab291 100644
/* Save guest registers, load host registers, keep flags */
"mov %0, %c[wordsize](%%"R"sp) \n\t"
"pop %0 \n\t"
-@@ -6228,6 +6248,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6234,6 +6254,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
#endif
[cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
[wordsize]"i"(sizeof(ulong))
@@ -20906,7 +20906,7 @@ index 4ff0ab9..fbab291 100644
: "cc", "memory"
, R"ax", R"bx", R"di", R"si"
#ifdef CONFIG_X86_64
-@@ -6256,7 +6281,16 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -6262,7 +6287,16 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
}
}
@@ -27431,7 +27431,7 @@ index 00aaf04..4a26505 100644
-}
-__setup("vdso=", vdso_setup);
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 2992678..c25a457 100644
+index a7678fa..7c74192 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -96,8 +96,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -27443,7 +27443,7 @@ index 2992678..c25a457 100644
RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
__read_mostly int xen_have_vector_callback;
EXPORT_SYMBOL_GPL(xen_have_vector_callback);
-@@ -884,14 +882,14 @@ static u32 xen_safe_apic_wait_icr_idle(void)
+@@ -899,14 +897,14 @@ static u32 xen_safe_apic_wait_icr_idle(void)
static void set_xen_basic_apic_ops(void)
{
@@ -27466,7 +27466,7 @@ index 2992678..c25a457 100644
}
#endif
-@@ -1182,30 +1180,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
+@@ -1197,30 +1195,30 @@ static const struct pv_apic_ops xen_apic_ops __initconst = {
#endif
};
@@ -27504,7 +27504,7 @@ index 2992678..c25a457 100644
{
if (pm_power_off)
pm_power_off();
-@@ -1308,7 +1306,17 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1323,7 +1321,17 @@ asmlinkage void __init xen_start_kernel(void)
__userpte_alloc_gfp &= ~__GFP_HIGHMEM;
/* Work out if we support NX */
@@ -27523,7 +27523,7 @@ index 2992678..c25a457 100644
xen_setup_features();
-@@ -1339,13 +1347,6 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1354,13 +1362,6 @@ asmlinkage void __init xen_start_kernel(void)
machine_ops = xen_machine_ops;
@@ -29614,7 +29614,7 @@ index 946166e..356b39a 100644
cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
(int)((char *)tl - (char *)reply->tag_list);
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
-index 43beaca..4a5b1dd 100644
+index 13cbdd3..26b88df 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -894,7 +894,7 @@ retry:
@@ -29693,7 +29693,7 @@ index 43beaca..4a5b1dd 100644
atomic_inc(&e->epoch->active);
spin_unlock(&mdev->epoch_lock);
-@@ -3885,7 +3885,7 @@ static void drbd_disconnect(struct drbd_conf *mdev)
+@@ -3884,7 +3884,7 @@ static void drbd_disconnect(struct drbd_conf *mdev)
D_ASSERT(list_empty(&mdev->done_ee));
/* ok, no more ee's on the fly, it is safe to reset the epoch_size */
@@ -35351,7 +35351,7 @@ index 4a518a3..936b334 100644
#define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \
((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index dd037dd..7a8f862 100644
+index cf20388..30f7d18 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -710,17 +710,17 @@ struct rtl8169_private {
@@ -45079,7 +45079,7 @@ index d918b55..d75e53c 100644
/* locality groups */
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index ec970cb..3538f6f 100644
+index 19e4518..187c008 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1747,7 +1747,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
@@ -45091,7 +45091,7 @@ index ec970cb..3538f6f 100644
break;
}
-@@ -2041,7 +2041,7 @@ repeat:
+@@ -2045,7 +2045,7 @@ repeat:
ac->ac_status = AC_STATUS_CONTINUE;
ac->ac_flags |= EXT4_MB_HINT_FIRST;
cr = 3;
@@ -45100,7 +45100,7 @@ index ec970cb..3538f6f 100644
goto repeat;
}
}
-@@ -2545,25 +2545,25 @@ int ext4_mb_release(struct super_block *sb)
+@@ -2549,25 +2549,25 @@ int ext4_mb_release(struct super_block *sb)
if (sbi->s_mb_stats) {
ext4_msg(sb, KERN_INFO,
"mballoc: %u blocks %u reqs (%u success)",
@@ -45136,7 +45136,7 @@ index ec970cb..3538f6f 100644
}
free_percpu(sbi->s_locality_groups);
-@@ -3045,16 +3045,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
+@@ -3049,16 +3049,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
@@ -45159,7 +45159,7 @@ index ec970cb..3538f6f 100644
}
if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
-@@ -3458,7 +3458,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
+@@ -3462,7 +3462,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
trace_ext4_mb_new_inode_pa(ac, pa);
ext4_mb_use_inode_pa(ac, pa);
@@ -45168,7 +45168,7 @@ index ec970cb..3538f6f 100644
ei = EXT4_I(ac->ac_inode);
grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
-@@ -3518,7 +3518,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
+@@ -3522,7 +3522,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
trace_ext4_mb_new_group_pa(ac, pa);
ext4_mb_use_group_pa(ac, pa);
@@ -45177,7 +45177,7 @@ index ec970cb..3538f6f 100644
grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
lg = ac->ac_lg;
-@@ -3607,7 +3607,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
+@@ -3611,7 +3611,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
* from the bitmap and continue.
*/
}
@@ -45186,7 +45186,7 @@ index ec970cb..3538f6f 100644
return err;
}
-@@ -3625,7 +3625,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
+@@ -3629,7 +3629,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
@@ -46857,7 +46857,7 @@ index a9ba244..d9df391 100644
kfree(s);
}
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index 001ef01..f7d5f07 100644
+index 36ad5b4..a106a1d 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -920,7 +920,7 @@ static struct file_system_type hugetlbfs_fs_type = {
@@ -64896,7 +64896,7 @@ index a2ef814..31a8e3f 100644
#define SCTP_DISABLE_DEBUG
#define SCTP_ASSERT(expr, str, func)
diff --git a/include/net/sock.h b/include/net/sock.h
-index 59a8947..0e0bd26 100644
+index f673ba5..04a6be7 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -303,7 +303,7 @@ struct sock {
@@ -64908,7 +64908,7 @@ index 59a8947..0e0bd26 100644
int sk_rcvbuf;
struct sk_filter __rcu *sk_filter;
-@@ -1693,7 +1693,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
+@@ -1705,7 +1705,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
}
static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
@@ -64917,7 +64917,7 @@ index 59a8947..0e0bd26 100644
int copy, int offset)
{
if (skb->ip_summed == CHECKSUM_NONE) {
-@@ -1955,7 +1955,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
+@@ -1967,7 +1967,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
}
}
@@ -64927,7 +64927,7 @@ index 59a8947..0e0bd26 100644
static inline struct page *sk_stream_alloc_page(struct sock *sk)
{
diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 2757a11..39b0464 100644
+index 8376a6a..efb6a24 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -479,7 +479,7 @@ extern void tcp_retransmit_timer(struct sock *sk);
@@ -64959,7 +64959,7 @@ index 2757a11..39b0464 100644
};
#define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
-@@ -1426,7 +1426,7 @@ struct tcp_seq_afinfo {
+@@ -1427,7 +1427,7 @@ struct tcp_seq_afinfo {
char *name;
sa_family_t family;
const struct file_operations *seq_fops;
@@ -65855,7 +65855,7 @@ index 5215a81..cfc0cac 100644
sem_params.flg = semflg;
sem_params.u.nsems = nsems;
diff --git a/ipc/shm.c b/ipc/shm.c
-index 85d81b4..11f020e 100644
+index a02ef57..4de5931 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);
@@ -65873,7 +65873,7 @@ index 85d81b4..11f020e 100644
void shm_init_ns(struct ipc_namespace *ns)
{
ns->shm_ctlmax = SHMMAX;
-@@ -508,6 +516,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
+@@ -510,6 +518,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
shp->shm_lprid = 0;
shp->shm_atim = shp->shm_dtim = 0;
shp->shm_ctim = get_seconds();
@@ -65888,7 +65888,7 @@ index 85d81b4..11f020e 100644
shp->shm_segsz = size;
shp->shm_nattch = 0;
shp->shm_file = file;
-@@ -559,18 +575,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
+@@ -561,18 +577,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
return 0;
}
@@ -65913,7 +65913,7 @@ index 85d81b4..11f020e 100644
shm_params.key = key;
shm_params.flg = shmflg;
shm_params.u.size = size;
-@@ -988,6 +1005,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+@@ -990,6 +1007,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
f_mode = FMODE_READ | FMODE_WRITE;
}
if (shmflg & SHM_EXEC) {
@@ -65926,7 +65926,7 @@ index 85d81b4..11f020e 100644
prot |= PROT_EXEC;
acc_mode |= S_IXUGO;
}
-@@ -1011,9 +1034,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
+@@ -1013,9 +1036,21 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (err)
goto out_unlock;
@@ -67291,7 +67291,7 @@ index 4e2e472..cd0c7ae 100644
/* Don't allow clients that don't understand the native
diff --git a/kernel/kmod.c b/kernel/kmod.c
-index 05698a7..a4c1e3a 100644
+index f2490e1..10aae14 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -66,7 +66,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
@@ -70320,7 +70320,7 @@ index 0b537f2..9e71eca 100644
return -ENOMEM;
return 0;
diff --git a/kernel/timer.c b/kernel/timer.c
-index 6dfdb72..fe81808 100644
+index dd93d90..e3ac8af 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1356,7 +1356,7 @@ void update_process_times(int user_tick)
@@ -72480,7 +72480,7 @@ index ef726e8..cd7f1ec 100644
capable(CAP_IPC_LOCK))
ret = do_mlockall(flags);
diff --git a/mm/mmap.c b/mm/mmap.c
-index 3635d47..e8bd34b 100644
+index ed884dd..b4b18e7 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -46,6 +46,16 @@
@@ -72761,7 +72761,7 @@ index 3635d47..e8bd34b 100644
return mmap_region(file, addr, len, flags, vm_flags, pgoff);
}
-@@ -1192,7 +1303,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
+@@ -1196,7 +1307,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
vm_flags_t vm_flags = vma->vm_flags;
/* If it was private or non-writable, the write bit is already clear */
@@ -72770,7 +72770,7 @@ index 3635d47..e8bd34b 100644
return 0;
/* The backer wishes to know when pages are first written to? */
-@@ -1241,14 +1352,24 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1245,14 +1356,24 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
unsigned long charged = 0;
struct inode *inode = file ? file->f_path.dentry->d_inode : NULL;
@@ -72797,7 +72797,7 @@ index 3635d47..e8bd34b 100644
}
/* Check against address space limit. */
-@@ -1297,6 +1418,16 @@ munmap_back:
+@@ -1301,6 +1422,16 @@ munmap_back:
goto unacct_error;
}
@@ -72814,7 +72814,7 @@ index 3635d47..e8bd34b 100644
vma->vm_mm = mm;
vma->vm_start = addr;
vma->vm_end = addr + len;
-@@ -1321,6 +1452,19 @@ munmap_back:
+@@ -1325,6 +1456,19 @@ munmap_back:
error = file->f_op->mmap(file, vma);
if (error)
goto unmap_and_free_vma;
@@ -72834,7 +72834,7 @@ index 3635d47..e8bd34b 100644
if (vm_flags & VM_EXECUTABLE)
added_exe_file_vma(mm);
-@@ -1358,6 +1502,11 @@ munmap_back:
+@@ -1362,6 +1506,11 @@ munmap_back:
vma_link(mm, vma, prev, rb_link, rb_parent);
file = vma->vm_file;
@@ -72846,7 +72846,7 @@ index 3635d47..e8bd34b 100644
/* Once vma denies write, undo our temporary denial count */
if (correct_wcount)
atomic_inc(&inode->i_writecount);
-@@ -1366,6 +1515,7 @@ out:
+@@ -1370,6 +1519,7 @@ out:
mm->total_vm += len >> PAGE_SHIFT;
vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
@@ -72854,7 +72854,7 @@ index 3635d47..e8bd34b 100644
if (vm_flags & VM_LOCKED) {
if (!mlock_vma_pages_range(vma, addr, addr + len))
mm->locked_vm += (len >> PAGE_SHIFT);
-@@ -1383,6 +1533,12 @@ unmap_and_free_vma:
+@@ -1387,6 +1537,12 @@ unmap_and_free_vma:
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
charged = 0;
free_vma:
@@ -72867,7 +72867,7 @@ index 3635d47..e8bd34b 100644
kmem_cache_free(vm_area_cachep, vma);
unacct_error:
if (charged)
-@@ -1390,6 +1546,44 @@ unacct_error:
+@@ -1394,6 +1550,44 @@ unacct_error:
return error;
}
@@ -72912,7 +72912,7 @@ index 3635d47..e8bd34b 100644
/* Get an address range which is currently unmapped.
* For shmat() with addr=0.
*
-@@ -1416,18 +1610,23 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1420,18 +1614,23 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
if (flags & MAP_FIXED)
return addr;
@@ -72943,7 +72943,7 @@ index 3635d47..e8bd34b 100644
}
full_search:
-@@ -1438,34 +1637,40 @@ full_search:
+@@ -1442,34 +1641,40 @@ full_search:
* Start a new search - just in case we missed
* some holes.
*/
@@ -72995,7 +72995,7 @@ index 3635d47..e8bd34b 100644
mm->free_area_cache = addr;
}
-@@ -1481,7 +1686,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1485,7 +1690,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
{
struct vm_area_struct *vma;
struct mm_struct *mm = current->mm;
@@ -73004,7 +73004,7 @@ index 3635d47..e8bd34b 100644
/* requested length too big for entire address space */
if (len > TASK_SIZE)
-@@ -1490,13 +1695,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1494,13 +1699,18 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
if (flags & MAP_FIXED)
return addr;
@@ -73027,7 +73027,7 @@ index 3635d47..e8bd34b 100644
}
/* check if free_area_cache is useful for us */
-@@ -1520,7 +1730,7 @@ try_again:
+@@ -1524,7 +1734,7 @@ try_again:
* return with success:
*/
vma = find_vma(mm, addr);
@@ -73036,7 +73036,7 @@ index 3635d47..e8bd34b 100644
/* remember the address as a hint for next time */
return (mm->free_area_cache = addr);
-@@ -1529,8 +1739,8 @@ try_again:
+@@ -1533,8 +1743,8 @@ try_again:
mm->cached_hole_size = vma->vm_start - addr;
/* try just below the current vma->vm_start */
@@ -73047,7 +73047,7 @@ index 3635d47..e8bd34b 100644
fail:
/*
-@@ -1553,13 +1763,21 @@ fail:
+@@ -1557,13 +1767,21 @@ fail:
* can happen with large stack limits and large mmap()
* allocations.
*/
@@ -73071,7 +73071,7 @@ index 3635d47..e8bd34b 100644
mm->cached_hole_size = ~0UL;
return addr;
-@@ -1568,6 +1786,12 @@ fail:
+@@ -1572,6 +1790,12 @@ fail:
void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
{
@@ -73084,7 +73084,7 @@ index 3635d47..e8bd34b 100644
/*
* Is this a new hole at the highest possible address?
*/
-@@ -1575,8 +1799,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1579,8 +1803,10 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
mm->free_area_cache = addr;
/* dont allow allocations above current base */
@@ -73096,7 +73096,7 @@ index 3635d47..e8bd34b 100644
}
unsigned long
-@@ -1672,6 +1898,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
+@@ -1676,6 +1902,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
return vma;
}
@@ -73125,7 +73125,7 @@ index 3635d47..e8bd34b 100644
/*
* Verify that the stack growth is acceptable and
* update accounting. This is shared with both the
-@@ -1688,6 +1936,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1692,6 +1940,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
return -ENOMEM;
/* Stack limit test */
@@ -73133,7 +73133,7 @@ index 3635d47..e8bd34b 100644
if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
return -ENOMEM;
-@@ -1698,6 +1947,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1702,6 +1951,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
locked = mm->locked_vm + grow;
limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
limit >>= PAGE_SHIFT;
@@ -73141,7 +73141,7 @@ index 3635d47..e8bd34b 100644
if (locked > limit && !capable(CAP_IPC_LOCK))
return -ENOMEM;
}
-@@ -1728,37 +1978,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1732,37 +1982,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
* PA-RISC uses this for its stack; IA64 for its Register Backing Store.
* vma is the last one with address > vma->vm_end. Have to extend vma.
*/
@@ -73199,7 +73199,7 @@ index 3635d47..e8bd34b 100644
unsigned long size, grow;
size = address - vma->vm_start;
-@@ -1773,6 +2034,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
+@@ -1777,6 +2038,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
}
}
}
@@ -73208,7 +73208,7 @@ index 3635d47..e8bd34b 100644
vma_unlock_anon_vma(vma);
khugepaged_enter_vma_merge(vma);
return error;
-@@ -1786,6 +2049,8 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1790,6 +2053,8 @@ int expand_downwards(struct vm_area_struct *vma,
unsigned long address)
{
int error;
@@ -73217,7 +73217,7 @@ index 3635d47..e8bd34b 100644
/*
* We must make sure the anon_vma is allocated
-@@ -1799,6 +2064,15 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1803,6 +2068,15 @@ int expand_downwards(struct vm_area_struct *vma,
if (error)
return error;
@@ -73233,7 +73233,7 @@ index 3635d47..e8bd34b 100644
vma_lock_anon_vma(vma);
/*
-@@ -1808,9 +2082,17 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1812,9 +2086,17 @@ int expand_downwards(struct vm_area_struct *vma,
*/
/* Somebody else might have raced and expanded it already */
@@ -73252,7 +73252,7 @@ index 3635d47..e8bd34b 100644
size = vma->vm_end - address;
grow = (vma->vm_start - address) >> PAGE_SHIFT;
-@@ -1820,11 +2102,22 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -1824,11 +2106,22 @@ int expand_downwards(struct vm_area_struct *vma,
if (!error) {
vma->vm_start = address;
vma->vm_pgoff -= grow;
@@ -73275,7 +73275,7 @@ index 3635d47..e8bd34b 100644
khugepaged_enter_vma_merge(vma);
return error;
}
-@@ -1894,6 +2187,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -1898,6 +2191,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
do {
long nrpages = vma_pages(vma);
@@ -73289,7 +73289,7 @@ index 3635d47..e8bd34b 100644
mm->total_vm -= nrpages;
vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
vma = remove_vma(vma);
-@@ -1939,6 +2239,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -1943,6 +2243,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
insertion_point = (prev ? &prev->vm_next : &mm->mmap);
vma->vm_prev = NULL;
do {
@@ -73306,7 +73306,7 @@ index 3635d47..e8bd34b 100644
rb_erase(&vma->vm_rb, &mm->mm_rb);
mm->map_count--;
tail_vma = vma;
-@@ -1967,14 +2277,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1971,14 +2281,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
struct vm_area_struct *new;
int err = -ENOMEM;
@@ -73340,7 +73340,7 @@ index 3635d47..e8bd34b 100644
/* most fields are the same, copy all, and then fixup */
*new = *vma;
-@@ -1987,6 +2316,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1991,6 +2320,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
}
@@ -73363,7 +73363,7 @@ index 3635d47..e8bd34b 100644
pol = mpol_dup(vma_policy(vma));
if (IS_ERR(pol)) {
err = PTR_ERR(pol);
-@@ -2012,6 +2357,42 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2016,6 +2361,42 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
else
err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
@@ -73406,7 +73406,7 @@ index 3635d47..e8bd34b 100644
/* Success. */
if (!err)
return 0;
-@@ -2024,10 +2405,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2028,10 +2409,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
removed_exe_file_vma(mm);
fput(new->vm_file);
}
@@ -73426,7 +73426,7 @@ index 3635d47..e8bd34b 100644
kmem_cache_free(vm_area_cachep, new);
out_err:
return err;
-@@ -2040,6 +2429,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2044,6 +2433,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long addr, int new_below)
{
@@ -73442,7 +73442,7 @@ index 3635d47..e8bd34b 100644
if (mm->map_count >= sysctl_max_map_count)
return -ENOMEM;
-@@ -2051,11 +2449,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2055,11 +2453,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
* work. This now handles partial unmappings.
* Jeremy Fitzhardinge <jeremy@goop.org>
*/
@@ -73473,7 +73473,7 @@ index 3635d47..e8bd34b 100644
if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
return -EINVAL;
-@@ -2130,6 +2547,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
+@@ -2134,6 +2551,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
/* Fix up all other VM information */
remove_vma_list(mm, vma);
@@ -73482,7 +73482,7 @@ index 3635d47..e8bd34b 100644
return 0;
}
EXPORT_SYMBOL(do_munmap);
-@@ -2139,6 +2558,13 @@ int vm_munmap(unsigned long start, size_t len)
+@@ -2143,6 +2562,13 @@ int vm_munmap(unsigned long start, size_t len)
int ret;
struct mm_struct *mm = current->mm;
@@ -73496,7 +73496,7 @@ index 3635d47..e8bd34b 100644
down_write(&mm->mmap_sem);
ret = do_munmap(mm, start, len);
up_write(&mm->mmap_sem);
-@@ -2152,16 +2578,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
+@@ -2156,16 +2582,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
return vm_munmap(addr, len);
}
@@ -73513,7 +73513,7 @@ index 3635d47..e8bd34b 100644
/*
* this is really a simplified "do_mmap". it only handles
* anonymous maps. eventually we may be able to do some
-@@ -2175,6 +2591,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2179,6 +2595,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
struct rb_node ** rb_link, * rb_parent;
pgoff_t pgoff = addr >> PAGE_SHIFT;
int error;
@@ -73521,7 +73521,7 @@ index 3635d47..e8bd34b 100644
len = PAGE_ALIGN(len);
if (!len)
-@@ -2186,16 +2603,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2190,16 +2607,30 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
@@ -73553,7 +73553,7 @@ index 3635d47..e8bd34b 100644
locked += mm->locked_vm;
lock_limit = rlimit(RLIMIT_MEMLOCK);
lock_limit >>= PAGE_SHIFT;
-@@ -2212,22 +2643,22 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2216,22 +2647,22 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
/*
* Clear old maps. this also does some error checking for us
*/
@@ -73581,7 +73581,7 @@ index 3635d47..e8bd34b 100644
return -ENOMEM;
/* Can we just expand an old private anonymous mapping? */
-@@ -2241,7 +2672,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2245,7 +2676,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
*/
vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
if (!vma) {
@@ -73590,7 +73590,7 @@ index 3635d47..e8bd34b 100644
return -ENOMEM;
}
-@@ -2255,11 +2686,12 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2259,11 +2690,12 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
vma_link(mm, vma, prev, rb_link, rb_parent);
out:
perf_event_mmap(vma);
@@ -73605,7 +73605,7 @@ index 3635d47..e8bd34b 100644
return addr;
}
-@@ -2315,8 +2747,10 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2319,8 +2751,10 @@ void exit_mmap(struct mm_struct *mm)
* Walk the list again, actually closing and freeing it,
* with preemption enabled, without holding any MM locks.
*/
@@ -73617,7 +73617,7 @@ index 3635d47..e8bd34b 100644
BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
}
-@@ -2330,6 +2764,13 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+@@ -2334,6 +2768,13 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
struct vm_area_struct * __vma, * prev;
struct rb_node ** rb_link, * rb_parent;
@@ -73631,7 +73631,7 @@ index 3635d47..e8bd34b 100644
/*
* The vm_pgoff of a purely anonymous vma should be irrelevant
* until its first write fault, when page's anon_vma and index
-@@ -2352,7 +2793,22 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+@@ -2356,7 +2797,22 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
if ((vma->vm_flags & VM_ACCOUNT) &&
security_vm_enough_memory_mm(mm, vma_pages(vma)))
return -ENOMEM;
@@ -73654,7 +73654,7 @@ index 3635d47..e8bd34b 100644
return 0;
}
-@@ -2371,6 +2827,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2375,6 +2831,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
struct mempolicy *pol;
bool faulted_in_anon_vma = true;
@@ -73663,7 +73663,7 @@ index 3635d47..e8bd34b 100644
/*
* If anonymous vma has not yet been faulted, update new pgoff
* to match new location, to increase its chance of merging.
-@@ -2438,6 +2896,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2442,6 +2900,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
return NULL;
}
@@ -73703,7 +73703,7 @@ index 3635d47..e8bd34b 100644
/*
* Return true if the calling process may expand its vm space by the passed
* number of pages
-@@ -2449,6 +2940,12 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
+@@ -2453,6 +2944,12 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
@@ -73716,7 +73716,7 @@ index 3635d47..e8bd34b 100644
if (cur + npages > lim)
return 0;
return 1;
-@@ -2519,6 +3016,22 @@ int install_special_mapping(struct mm_struct *mm,
+@@ -2523,6 +3020,22 @@ int install_special_mapping(struct mm_struct *mm,
vma->vm_start = addr;
vma->vm_end = addr + len;
@@ -76208,7 +76208,7 @@ index da7e0c8..07ccc3e 100644
return err;
diff --git a/net/core/dev.c b/net/core/dev.c
-index dd12421..abff0e6 100644
+index 7db83d6..0934b2b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1139,9 +1139,13 @@ void dev_load(struct net *net, const char *name)
@@ -76427,7 +76427,7 @@ index 611c5ef..88f6d6d 100644
{
int new_fd;
diff --git a/net/core/sock.c b/net/core/sock.c
-index f8b5030..75d1195 100644
+index 561eb57..6278501 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -340,7 +340,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
@@ -76522,7 +76522,7 @@ index f8b5030..75d1195 100644
return -EFAULT;
lenout:
if (put_user(len, optlen))
-@@ -2139,7 +2139,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
+@@ -2127,7 +2127,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
*/
smp_wmb();
atomic_set(&sk->sk_refcnt, 1);
@@ -77438,7 +77438,7 @@ index 3ee2870..f19606b 100644
static int raw6_seq_show(struct seq_file *seq, void *v)
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index 3889e02..889d1ea 100644
+index 7ee7121..a992f08 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -94,6 +94,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk,
@@ -77541,7 +77541,7 @@ index 3889e02..889d1ea 100644
static int tcp6_seq_show(struct seq_file *seq, void *v)
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
-index 37b0699..d323408 100644
+index aa2f18b..69e7646 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -50,6 +50,10 @@
@@ -78292,10 +78292,10 @@ index 7ed9b1d..79780cd 100644
*uaddr_len = sizeof(struct sockaddr_ax25);
}
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
-index 38ca5e0..2395340 100644
+index cfcd783..9dec8ce 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1696,7 +1696,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1682,7 +1682,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
spin_lock(&sk->sk_receive_queue.lock);
po->stats.tp_packets++;
@@ -78304,7 +78304,7 @@ index 38ca5e0..2395340 100644
__skb_queue_tail(&sk->sk_receive_queue, skb);
spin_unlock(&sk->sk_receive_queue.lock);
sk->sk_data_ready(sk, skb->len);
-@@ -1705,7 +1705,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1691,7 +1691,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
drop_n_acct:
spin_lock(&sk->sk_receive_queue.lock);
po->stats.tp_drops++;
@@ -78313,7 +78313,7 @@ index 38ca5e0..2395340 100644
spin_unlock(&sk->sk_receive_queue.lock);
drop_n_restore:
-@@ -2651,6 +2651,7 @@ out:
+@@ -2637,6 +2637,7 @@ out:
static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len)
{
@@ -78321,7 +78321,7 @@ index 38ca5e0..2395340 100644
struct sock_exterr_skb *serr;
struct sk_buff *skb, *skb2;
int copied, err;
-@@ -2672,8 +2673,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len)
+@@ -2658,8 +2659,9 @@ static int packet_recv_error(struct sock *sk, struct msghdr *msg, int len)
sock_recv_timestamp(msg, sk, skb);
serr = SKB_EXT_ERR(skb);
@@ -78332,7 +78332,7 @@ index 38ca5e0..2395340 100644
msg->msg_flags |= MSG_ERRQUEUE;
err = copied;
-@@ -3304,7 +3306,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3290,7 +3292,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
case PACKET_HDRLEN:
if (len > sizeof(int))
len = sizeof(int);
@@ -78341,7 +78341,7 @@ index 38ca5e0..2395340 100644
return -EFAULT;
switch (val) {
case TPACKET_V1:
-@@ -3354,7 +3356,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3340,7 +3342,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
if (put_user(len, optlen))
return -EFAULT;
diff --git a/main/linux-grsec/r8169-fix-vlan-tag-reordering.patch b/main/linux-grsec/r8169-fix-vlan-tag-reordering.patch
deleted file mode 100644
index 474e56747..000000000
--- a/main/linux-grsec/r8169-fix-vlan-tag-reordering.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From ce11ff5e5963e441feb591e76278528f876c332d Mon Sep 17 00:00:00 2001
-From: =?utf8?q?fran=C3=A7ois=20romieu?= <romieu@fr.zoreil.com>
-Date: Thu, 24 Jan 2013 13:30:06 +0000
-Subject: [PATCH] r8169: fix vlan tag read ordering.
-
-Control of receive descriptor must not be returned to ethernet chipset
-before vlan tag processing is done.
-
-VLAN tag receive word is now reset both in normal and error path.
-
-Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
-Spotted-by: Timo Teras <timo.teras@iki.fi>
-Cc: Hayes Wang <hayeswang@realtek.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/realtek/r8169.c | 14 ++++++--------
- 1 files changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index c28bc31..1170232 100644
---- a/drivers/net/ethernet/realtek/r8169.c
-+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -1826,8 +1826,6 @@ static void rtl8169_rx_vlan_tag(struct RxDesc *desc, struct sk_buff *skb)
-
- if (opts2 & RxVlanTag)
- __vlan_hwaccel_put_tag(skb, swab16(opts2 & 0xffff));
--
-- desc->opts2 = 0;
- }
-
- static int rtl8169_gset_tbi(struct net_device *dev, struct ethtool_cmd *cmd)
-@@ -6064,8 +6062,6 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget
- !(status & (RxRWT | RxFOVF)) &&
- (dev->features & NETIF_F_RXALL))
- goto process_pkt;
--
-- rtl8169_mark_to_asic(desc, rx_buf_sz);
- } else {
- struct sk_buff *skb;
- dma_addr_t addr;
-@@ -6086,16 +6082,14 @@ process_pkt:
- if (unlikely(rtl8169_fragmented_frame(status))) {
- dev->stats.rx_dropped++;
- dev->stats.rx_length_errors++;
-- rtl8169_mark_to_asic(desc, rx_buf_sz);
-- continue;
-+ goto release_descriptor;
- }
-
- skb = rtl8169_try_rx_copy(tp->Rx_databuff[entry],
- tp, pkt_size, addr);
-- rtl8169_mark_to_asic(desc, rx_buf_sz);
- if (!skb) {
- dev->stats.rx_dropped++;
-- continue;
-+ goto release_descriptor;
- }
-
- rtl8169_rx_csum(skb, status);
-@@ -6111,6 +6105,10 @@ process_pkt:
- tp->rx_stats.bytes += pkt_size;
- u64_stats_update_end(&tp->rx_stats.syncp);
- }
-+release_descriptor:
-+ desc->opts2 = 0;
-+ wmb();
-+ rtl8169_mark_to_asic(desc, rx_buf_sz);
- }
-
- count = cur_rx - tp->cur_rx;
---
-1.7.6.5
-