diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2013-05-20 10:35:36 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-05-20 10:35:36 +0000 |
commit | a06f245009bedc8a7564225f7844c316ea6dd7f8 (patch) | |
tree | fd514bd2bb46645ac65b3cbdefdd319f315e1c54 | |
parent | 13e7303be19a003b85e73795409e1bcb7bfa9666 (diff) | |
download | aports-a06f245009bedc8a7564225f7844c316ea6dd7f8.tar.bz2 aports-a06f245009bedc8a7564225f7844c316ea6dd7f8.tar.xz |
main/linux-grsec: upgrade to 3.4.46
-rw-r--r-- | main/linux-grsec/APKBUILD | 8 | ||||
-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.patch | 73 |
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 - |