diff options
author | 2017-01-16 16:38:51 -0500 | |
---|---|---|
committer | 2017-01-16 16:38:51 -0500 | |
commit | c6ce1c33ba9c383aa31a43e5d473db494f3eb6f1 (patch) | |
tree | 85d4a6e3fd0f2ead424786b0cb69aa968b2aeadf | |
parent | grsecurity-3.1-4.8.17-201701121950 (diff) | |
download | hardened-patchset-c6ce1c33ba9c383aa31a43e5d473db494f3eb6f1.tar.gz hardened-patchset-c6ce1c33ba9c383aa31a43e5d473db494f3eb6f1.tar.bz2 hardened-patchset-c6ce1c33ba9c383aa31a43e5d473db494f3eb6f1.zip |
grsecurity-3.1-4.8.17-20170115162020170115
-rw-r--r-- | 4.8.17/0000_README | 2 | ||||
-rw-r--r-- | 4.8.17/4420_grsecurity-3.1-4.8.17-201701151620.patch (renamed from 4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch) | 198 | ||||
-rw-r--r-- | 4.8.17/4427_force_XATTR_PAX_tmpfs.patch | 2 | ||||
-rw-r--r-- | 4.8.17/4475_emutramp_default_on.patch | 4 |
4 files changed, 133 insertions, 73 deletions
diff --git a/4.8.17/0000_README b/4.8.17/0000_README index a2e828f..96fd06a 100644 --- a/4.8.17/0000_README +++ b/4.8.17/0000_README @@ -6,7 +6,7 @@ Patch: 1016_linux-4.8.17.patch From: http://www.kernel.org Desc: Linux 4.8.17 -Patch: 4420_grsecurity-3.1-4.8.17-201701121950.patch +Patch: 4420_grsecurity-3.1-4.8.17-201701151620.patch From: http://www.grsecurity.net Desc: hardened-sources base patch from upstream grsecurity diff --git a/4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch b/4.8.17/4420_grsecurity-3.1-4.8.17-201701151620.patch index 07572d7..147c250 100644 --- a/4.8.17/4420_grsecurity-3.1-4.8.17-201701121950.patch +++ b/4.8.17/4420_grsecurity-3.1-4.8.17-201701151620.patch @@ -152755,7 +152755,7 @@ index 19e796d..9c8fa80 100644 /* * free pages are specially detected outside this table: diff --git a/mm/memory.c b/mm/memory.c -index 793fe0f..6e94a87 100644 +index 793fe0f..9e24e98 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -427,6 +427,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, @@ -153209,7 +153209,32 @@ index 793fe0f..6e94a87 100644 /* no need to invalidate: a not-present page won't be cached */ update_mmu_cache(vma, fe->address, fe->pte); -@@ -3552,6 +3763,11 @@ static int handle_pte_fault(struct fault_env *fe) +@@ -3226,6 +3437,11 @@ static int do_cow_fault(struct fault_env *fe, pgoff_t pgoff) + copy_user_highpage(new_page, fault_page, fe->address, vma); + __SetPageUptodate(new_page); + ++#ifdef CONFIG_PAX_SEGMEXEC ++ if (pax_find_mirror_vma(vma)) ++ BUG_ON(!trylock_page(new_page)); ++#endif ++ + ret |= alloc_set_pte(fe, memcg, new_page); + if (fe->pte) + pte_unmap_unlock(fe->pte, fe->ptl); +@@ -3235,6 +3451,12 @@ static int do_cow_fault(struct fault_env *fe, pgoff_t pgoff) + } else { + dax_unlock_mapping_entry(vma->vm_file->f_mapping, pgoff); + } ++ ++#ifdef CONFIG_PAX_SEGMEXEC ++ if (pax_find_mirror_vma(vma)) ++ unlock_page(new_page); ++#endif ++ + if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) + goto uncharge_out; + return ret; +@@ -3552,6 +3774,11 @@ static int handle_pte_fault(struct fault_env *fe) if (fe->flags & FAULT_FLAG_WRITE) flush_tlb_fix_spurious_fault(fe->vma, fe->address); } @@ -153221,7 +153246,7 @@ index 793fe0f..6e94a87 100644 unlock: pte_unmap_unlock(fe->pte, fe->ptl); return 0; -@@ -3575,14 +3791,49 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, +@@ -3575,14 +3802,49 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, pgd_t *pgd; pud_t *pud; @@ -153275,7 +153300,7 @@ index 793fe0f..6e94a87 100644 int ret = create_huge_pmd(&fe); if (!(ret & VM_FAULT_FALLBACK)) return ret; -@@ -3592,7 +3843,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, +@@ -3592,7 +3854,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, barrier(); if (pmd_trans_huge(orig_pmd) || pmd_devmap(orig_pmd)) { @@ -153284,7 +153309,7 @@ index 793fe0f..6e94a87 100644 return do_huge_pmd_numa_page(&fe, orig_pmd); if ((fe.flags & FAULT_FLAG_WRITE) && -@@ -3667,7 +3918,7 @@ EXPORT_SYMBOL_GPL(handle_mm_fault); +@@ -3667,7 +3929,7 @@ EXPORT_SYMBOL_GPL(handle_mm_fault); * Allocate page upper directory. * We've already handled the fast-path in-line. */ @@ -153293,7 +153318,7 @@ index 793fe0f..6e94a87 100644 { pud_t *new = pud_alloc_one(mm, address); if (!new) -@@ -3678,11 +3929,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) +@@ -3678,11 +3940,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) spin_lock(&mm->page_table_lock); if (pgd_present(*pgd)) /* Another has populated it */ pud_free(mm, new); @@ -153317,7 +153342,7 @@ index 793fe0f..6e94a87 100644 #endif /* __PAGETABLE_PUD_FOLDED */ #ifndef __PAGETABLE_PMD_FOLDED -@@ -3690,7 +3953,7 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) +@@ -3690,7 +3964,7 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) * Allocate page middle directory. * We've already handled the fast-path in-line. */ @@ -153326,7 +153351,7 @@ index 793fe0f..6e94a87 100644 { pmd_t *new = pmd_alloc_one(mm, address); if (!new) -@@ -3702,19 +3965,35 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) +@@ -3702,19 +3976,35 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) #ifndef __ARCH_HAS_4LEVEL_HACK if (!pud_present(*pud)) { mm_inc_nr_pmds(mm); @@ -153364,7 +153389,7 @@ index 793fe0f..6e94a87 100644 #endif /* __PAGETABLE_PMD_FOLDED */ static int __follow_pte(struct mm_struct *mm, unsigned long address, -@@ -3824,8 +4103,8 @@ out: +@@ -3824,8 +4114,8 @@ out: return ret; } @@ -153375,7 +153400,7 @@ index 793fe0f..6e94a87 100644 { resource_size_t phys_addr; unsigned long prot = 0; -@@ -3851,8 +4130,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); +@@ -3851,8 +4141,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys); * Access another process' address space as given in mm. If non-NULL, use the * given task for page fault accounting. */ @@ -153386,7 +153411,7 @@ index 793fe0f..6e94a87 100644 { struct vm_area_struct *vma; void *old_buf = buf; -@@ -3860,7 +4139,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3860,7 +4150,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, down_read(&mm->mmap_sem); /* ignore errors, just check how much was successfully transferred */ while (len) { @@ -153395,7 +153420,7 @@ index 793fe0f..6e94a87 100644 void *maddr; struct page *page = NULL; -@@ -3921,8 +4200,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, +@@ -3921,8 +4211,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, * * The caller must hold a reference on @mm. */ @@ -153406,7 +153431,7 @@ index 793fe0f..6e94a87 100644 { return __access_remote_vm(NULL, mm, addr, buf, len, write); } -@@ -3932,11 +4211,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, +@@ -3932,11 +4222,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr, * Source/target buffer must be kernel space, * Do not walk the page table directly, use get_user_pages */ @@ -168783,7 +168808,7 @@ index 8b29dc1..ec1516e 100644 diff --git a/scripts/gcc-plugins/checker_plugin.c b/scripts/gcc-plugins/checker_plugin.c new file mode 100644 -index 0000000..0cd5656 +index 0000000..27fed8d --- /dev/null +++ b/scripts/gcc-plugins/checker_plugin.c @@ -0,0 +1,491 @@ @@ -169264,7 +169289,7 @@ index 0000000..0cd5656 + enable_context = true; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + if (enable_user) @@ -169280,7 +169305,7 @@ index 0000000..0cd5656 +} diff --git a/scripts/gcc-plugins/colorize_plugin.c b/scripts/gcc-plugins/colorize_plugin.c new file mode 100644 -index 0000000..e6a0d72 +index 0000000..a229d00 --- /dev/null +++ b/scripts/gcc-plugins/colorize_plugin.c @@ -0,0 +1,158 @@ @@ -169432,7 +169457,7 @@ index 0000000..e6a0d72 + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value); + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + if (colorize) { @@ -169444,7 +169469,7 @@ index 0000000..e6a0d72 +} diff --git a/scripts/gcc-plugins/constify_plugin.c b/scripts/gcc-plugins/constify_plugin.c new file mode 100644 -index 0000000..e9051b5 +index 0000000..3cd0652 --- /dev/null +++ b/scripts/gcc-plugins/constify_plugin.c @@ -0,0 +1,577 @@ @@ -170006,7 +170031,7 @@ index 0000000..e9051b5 + enabled = false; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + if (strncmp(lang_hooks.name, "GNU C", 5) && !strncmp(lang_hooks.name, "GNU C+", 6)) { @@ -170488,10 +170513,10 @@ index 0000000..7514850 +fi diff --git a/scripts/gcc-plugins/initify_plugin.c b/scripts/gcc-plugins/initify_plugin.c new file mode 100644 -index 0000000..07af312 +index 0000000..0fa1d7f --- /dev/null +++ b/scripts/gcc-plugins/initify_plugin.c -@@ -0,0 +1,1805 @@ +@@ -0,0 +1,1831 @@ +/* + * Copyright 2015-2017 by Emese Revfy <re.emese@gmail.com> + * Licensed under the GPL v2 @@ -170541,7 +170566,7 @@ index 0000000..07af312 +__visible int plugin_is_GPL_compatible; + +static struct plugin_info initify_plugin_info = { -+ .version = "20161208", ++ .version = "20170112", + .help = "disable\tturn off the initify plugin\n" + "verbose\tprint all initified strings and all" + " functions which should be __init/__exit\n" @@ -172013,14 +172038,46 @@ index 0000000..07af312 + } +} + ++static bool has_non_init_caller(struct cgraph_node *callee) ++{ ++ struct cgraph_edge *e = callee->callers; ++ ++ if (!e) ++ return true; ++ ++ for (; e; e = e->next_caller) { ++ enum section_type caller_section; ++ struct cgraph_node *caller = e->caller; ++ ++ caller_section = get_init_exit_section(NODE_DECL(caller)); ++ if (caller_section == NONE && NODE_SYMBOL(caller)->aux == (void *)NONE) ++ return true; ++ } ++ ++ return false; ++} ++ ++static void has_non_init_clone(struct cgraph_node *node, bool *has_non_init) ++{ ++ if (*has_non_init) ++ return; ++ ++ if (has_non_init_caller(node)) ++ *has_non_init = true; ++ ++ if (node->clones) ++ has_non_init_clone(node->clones, has_non_init); ++ if (node->clone_of) ++ has_non_init_clone(node->clone_of, has_non_init); ++} ++ +/* + * If the function is called by only __init/__exit functions then it can become + * an __init/__exit function as well. + */ +static bool should_init_exit(struct cgraph_node *callee) +{ -+ struct cgraph_edge *e; -+ bool only_init_callers; ++ bool has_non_init; + const_tree callee_decl = NODE_DECL(callee); + + if (NODE_SYMBOL(callee)->aux != (void *)NONE) @@ -172035,39 +172092,33 @@ index 0000000..07af312 + if (NODE_SYMBOL(callee)->address_taken) + return false; + -+ e = callee->callers; -+ if (!e) -+ return false; -+ -+ only_init_callers = true; -+ for (; e; e = e->next_caller) { -+ enum section_type caller_section; -+ struct cgraph_node *caller = e->caller; -+ -+ caller_section = get_init_exit_section(NODE_DECL(caller)); -+ if (caller_section == NONE && NODE_SYMBOL(caller)->aux == (void *)NONE) -+ only_init_callers = false; -+ } -+ -+ return only_init_callers; ++ has_non_init = false; ++ has_non_init_clone(callee, &has_non_init); ++ return !has_non_init; +} + -+static bool inherit_section(struct cgraph_node *callee, struct cgraph_node *caller, enum section_type curfn_section) ++static bool inherit_section(struct cgraph_node *callee, struct cgraph_node *caller, enum section_type caller_section) +{ -+ if (curfn_section == NONE) -+ curfn_section = (enum section_type)(unsigned long)NODE_SYMBOL(caller)->aux; ++ enum section_type callee_section; ++ ++ if (caller_section == NONE) ++ caller_section = (enum section_type)(unsigned long)NODE_SYMBOL(caller)->aux; ++ ++ callee_section = (enum section_type)(unsigned long)NODE_SYMBOL(callee)->aux; ++ if (caller_section == INIT && callee_section == EXIT) ++ goto both_section; + -+ if (curfn_section == INIT && NODE_SYMBOL(callee)->aux == (void *)EXIT) ++ if (caller_section == EXIT && callee_section == INIT) + goto both_section; + -+ if (curfn_section == EXIT && NODE_SYMBOL(callee)->aux == (void *)INIT) ++ if (caller_section == BOTH && (callee_section == INIT || callee_section == EXIT)) + goto both_section; + + if (!should_init_exit(callee)) + return false; + -+ gcc_assert(NODE_SYMBOL(callee)->aux == (void *)NONE); -+ NODE_SYMBOL(callee)->aux = (void *)curfn_section; ++ gcc_assert(callee_section == NONE); ++ NODE_SYMBOL(callee)->aux = (void *)caller_section; + return true; + +both_section: @@ -172285,7 +172336,7 @@ index 0000000..07af312 + continue; + } + -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &initify_plugin_info); @@ -172436,7 +172487,7 @@ index 0000000..0a9214d +} diff --git a/scripts/gcc-plugins/kernexec_plugin.c b/scripts/gcc-plugins/kernexec_plugin.c new file mode 100644 -index 0000000..9ac2ebb +index 0000000..1a35a0c --- /dev/null +++ b/scripts/gcc-plugins/kernexec_plugin.c @@ -0,0 +1,393 @@ @@ -172821,7 +172872,7 @@ index 0000000..9ac2ebb + error(G_("invalid option argument '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, argv[i].value); + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + if (!kernexec_instrument_fptr || !kernexec_instrument_retaddr) + error(G_("no instrumentation method was selected via '-fplugin-arg-%s-method'"), plugin_name); @@ -172835,7 +172886,7 @@ index 0000000..9ac2ebb +} diff --git a/scripts/gcc-plugins/latent_entropy_plugin.c b/scripts/gcc-plugins/latent_entropy_plugin.c new file mode 100644 -index 0000000..56b1ece +index 0000000..d5a37cb --- /dev/null +++ b/scripts/gcc-plugins/latent_entropy_plugin.c @@ -0,0 +1,609 @@ @@ -173435,7 +173486,7 @@ index 0000000..56b1ece + enabled = false; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &latent_entropy_plugin_info); @@ -173450,7 +173501,7 @@ index 0000000..56b1ece +} diff --git a/scripts/gcc-plugins/randomize_layout_plugin.c b/scripts/gcc-plugins/randomize_layout_plugin.c new file mode 100644 -index 0000000..2ca34f1 +index 0000000..71911c82 --- /dev/null +++ b/scripts/gcc-plugins/randomize_layout_plugin.c @@ -0,0 +1,940 @@ @@ -174369,7 +174420,7 @@ index 0000000..2ca34f1 + performance_mode = 1; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + if (strlen(randstruct_seed) != 64) { @@ -175062,7 +175113,7 @@ index 0000000..161102f +} diff --git a/scripts/gcc-plugins/rap_plugin/rap_plugin.c b/scripts/gcc-plugins/rap_plugin/rap_plugin.c new file mode 100644 -index 0000000..8359861 +index 0000000..998fc0f --- /dev/null +++ b/scripts/gcc-plugins/rap_plugin/rap_plugin.c @@ -0,0 +1,505 @@ @@ -175548,7 +175599,7 @@ index 0000000..8359861 + continue; + } + -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &rap_plugin_info); @@ -175674,7 +175725,7 @@ index 0000000..65bc1cd + U64TO8_LE(out, b); +} diff --git a/scripts/gcc-plugins/sancov_plugin.c b/scripts/gcc-plugins/sancov_plugin.c -index aedd611..72265dd 100644 +index aedd611..f39cee3 100644 --- a/scripts/gcc-plugins/sancov_plugin.c +++ b/scripts/gcc-plugins/sancov_plugin.c @@ -1,5 +1,5 @@ @@ -175732,6 +175783,15 @@ index aedd611..72265dd 100644 if (!plugin_default_version_check(version, &gcc_version)) { error(G_("incompatible gcc/plugin versions")); +@@ -126,7 +124,7 @@ int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version + enable = false; + continue; + } +- error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &sancov_plugin_info); @@ -137,7 +135,7 @@ int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version #if BUILDING_GCC_VERSION < 6000 register_callback(plugin_name, PLUGIN_START_UNIT, &sancov_start_unit, NULL); @@ -175779,10 +175839,10 @@ index 0000000..a8039b2 +clean-files += *.so diff --git a/scripts/gcc-plugins/size_overflow_plugin/disable.data b/scripts/gcc-plugins/size_overflow_plugin/disable.data new file mode 100644 -index 0000000..925b27a +index 0000000..83975f2 --- /dev/null +++ b/scripts/gcc-plugins/size_overflow_plugin/disable.data -@@ -0,0 +1,12471 @@ +@@ -0,0 +1,12472 @@ +disable_so_interrupt_pnode_gru_message_queue_desc_4 interrupt_pnode gru_message_queue_desc 0 4 NULL +disable_so_bch_btree_insert_fndecl_12 bch_btree_insert fndecl 0 12 NULL +disable_so_macvlan_sync_address_fndecl_22 macvlan_sync_address fndecl 0 22 NULL nohasharray @@ -188254,6 +188314,7 @@ index 0000000..925b27a +btrfs_get_token_32_fndecl_7192_fns btrfs_get_token_32 fndecl 0 7192 NULL +btrfs_get_token_16_fndecl_46639_fns btrfs_get_token_16 fndecl 0 46639 NULL +btrfs_get_token_64_fndecl_54223_fns btrfs_get_token_64 fndecl 0 54223 NULL ++qdisc_tree_reduce_backlog_fndecl_3865_fields qdisc_tree_reduce_backlog fndecl 2 3865 NULL diff --git a/scripts/gcc-plugins/size_overflow_plugin/e_aux.data b/scripts/gcc-plugins/size_overflow_plugin/e_aux.data new file mode 100644 index 0000000..74e91b2 @@ -188359,10 +188420,10 @@ index 0000000..74e91b2 +enable_so_zpios_read_fndecl_64734 zpios_read fndecl 3 64734 NULL diff --git a/scripts/gcc-plugins/size_overflow_plugin/e_fields.data b/scripts/gcc-plugins/size_overflow_plugin/e_fields.data new file mode 100644 -index 0000000..4aabb55 +index 0000000..6b5367db --- /dev/null +++ b/scripts/gcc-plugins/size_overflow_plugin/e_fields.data -@@ -0,0 +1,16262 @@ +@@ -0,0 +1,16261 @@ +recv_ctrl_pipe_us_data_0_fields recv_ctrl_pipe us_data 0 0 NULL +__earlyonly_bootmem_alloc_fndecl_3_fields __earlyonly_bootmem_alloc fndecl 2-3-4 3 NULL +size_ttm_mem_reg_8_fields size ttm_mem_reg 0 8 NULL @@ -189301,7 +189362,6 @@ index 0000000..4aabb55 +find_end_of_node_fndecl_3843_fields find_end_of_node fndecl 0-3-1-2 3843 NULL +bg_inode_table_hi_ext4_group_desc_3844_fields bg_inode_table_hi ext4_group_desc 0 3844 NULL +btrfs_dirty_pages_fndecl_3848_fields btrfs_dirty_pages fndecl 6-5 3848 NULL -+qdisc_tree_reduce_backlog_fndecl_3865_fields qdisc_tree_reduce_backlog fndecl 2 3865 NULL +ocfs2_free_clusters_fndecl_3866_fields ocfs2_free_clusters fndecl 4 3866 NULL +minlen_fstrim_range_3870_fields minlen fstrim_range 0 3870 NULL +size_of_priv_dvb_usb_adapter_fe_properties_3875_fields size_of_priv dvb_usb_adapter_fe_properties 0 3875 NULL @@ -214621,7 +214681,7 @@ index 0000000..b5291e1 + diff --git a/scripts/gcc-plugins/size_overflow_plugin/size_overflow_plugin.c b/scripts/gcc-plugins/size_overflow_plugin/size_overflow_plugin.c new file mode 100644 -index 0000000..4645a29 +index 0000000..4f667bad --- /dev/null +++ b/scripts/gcc-plugins/size_overflow_plugin/size_overflow_plugin.c @@ -0,0 +1,299 @@ @@ -214900,7 +214960,7 @@ index 0000000..4645a29 + continue; + } + -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &size_overflow_plugin_info); @@ -217198,7 +217258,7 @@ index 0000000..7b24aea +} diff --git a/scripts/gcc-plugins/stackleak_plugin.c b/scripts/gcc-plugins/stackleak_plugin.c new file mode 100644 -index 0000000..b70f0bc +index 0000000..75524f4 --- /dev/null +++ b/scripts/gcc-plugins/stackleak_plugin.c @@ -0,0 +1,342 @@ @@ -217534,7 +217594,7 @@ index 0000000..b70f0bc + init_locals = true; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_START_UNIT, &stackleak_start_unit, NULL); @@ -217546,7 +217606,7 @@ index 0000000..b70f0bc +} diff --git a/scripts/gcc-plugins/structleak_plugin.c b/scripts/gcc-plugins/structleak_plugin.c new file mode 100644 -index 0000000..0afee93 +index 0000000..7ff562f --- /dev/null +++ b/scripts/gcc-plugins/structleak_plugin.c @@ -0,0 +1,235 @@ @@ -217773,7 +217833,7 @@ index 0000000..0afee93 + enable = false; + continue; + } -+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); ++ error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + } + + register_callback(plugin_name, PLUGIN_INFO, NULL, &structleak_plugin_info); @@ -218275,7 +218335,7 @@ index b3775a9..be6b9f9 100755 # Find all available archs find_all_archs() diff --git a/security/Kconfig b/security/Kconfig -index 118f454..5c61f40 100644 +index 118f454..288ab93 100644 --- a/security/Kconfig +++ b/security/Kconfig @@ -4,6 +4,1065 @@ @@ -219383,7 +219443,7 @@ index 118f454..5c61f40 100644 - separately allocates pages, are not on the process stack, - or are part of the kernel text. This kills entire classes - of heap overflow exploits and similar kernel memory exposures. -+ def_bool y ++ bool + select BUG if BROKEN_SECURITY config HARDENED_USERCOPY_PAGESPAN diff --git a/4.8.17/4427_force_XATTR_PAX_tmpfs.patch b/4.8.17/4427_force_XATTR_PAX_tmpfs.patch index caecb91..ba7da66 100644 --- a/4.8.17/4427_force_XATTR_PAX_tmpfs.patch +++ b/4.8.17/4427_force_XATTR_PAX_tmpfs.patch @@ -6,7 +6,7 @@ namespace supported on tmpfs so that the PaX markings survive emerge. diff -Naur a/mm/shmem.c b/mm/shmem.c --- a/mm/shmem.c 2016-04-29 19:56:25.306101147 -0400 +++ b/mm/shmem.c 2016-04-29 19:59:44.126104490 -0400 -@@ -3255,7 +3255,6 @@ +@@ -3257,7 +3257,6 @@ return simple_xattr_set(&info->xattrs, name, value, size, flags); } diff --git a/4.8.17/4475_emutramp_default_on.patch b/4.8.17/4475_emutramp_default_on.patch index 7b468ee..feb8c7b 100644 --- a/4.8.17/4475_emutramp_default_on.patch +++ b/4.8.17/4475_emutramp_default_on.patch @@ -10,7 +10,7 @@ See bug: diff -Naur linux-3.9.2-hardened.orig/security/Kconfig linux-3.9.2-hardened/security/Kconfig --- linux-3.9.2-hardened.orig/security/Kconfig 2013-05-18 08:53:41.000000000 -0400 +++ linux-3.9.2-hardened/security/Kconfig 2013-05-18 09:17:57.000000000 -0400 -@@ -434,7 +434,7 @@ +@@ -440,7 +440,7 @@ config PAX_EMUTRAMP bool "Emulate trampolines" @@ -19,7 +19,7 @@ diff -Naur linux-3.9.2-hardened.orig/security/Kconfig linux-3.9.2-hardened/secur depends on (PAX_PAGEEXEC || PAX_SEGMEXEC) && (PARISC || X86) help There are some programs and libraries that for one reason or -@@ -457,6 +457,12 @@ +@@ -463,6 +463,12 @@ utilities to disable CONFIG_PAX_PAGEEXEC and CONFIG_PAX_SEGMEXEC for the affected files. |