This is Archlinux with kernel 4.5.3 and grsec patch 201605080858.
Linux version 4.5.3.201605080858-1-grsec (builduser@strcat) (gcc version 6.1.1 20160501 (GCC) )
Here is what happens:
- Code: Select all
PAX: size overflow detected in function track_pfn_insert arch/x86/mm/pat.c:961 cicus.328_21 max, count: 27, decl: lookup_memtype; num: 1; context: fndecl;
CPU: 3 PID: 635 Comm: Xorg Not tainted 4.5.3.201605080858-1-grsec #1
Hardware name: TOSHIBA SATELLITE Z30-B/SATELLITE Z30-B, BIOS Version 3.20 04/09/2015
3ba7cd4a00000002 3ba7cd4afd24c243 0000000000000286 0000000000000000
ffffc900012c3b00 ffffffff99311cbb 0000000000000008 3ba7cd4afd24c243
ffffffff9991b4ab 00000000000003c1 ffffc900012c3b30 ffffffff991d8b14
Call Trace:
[<ffffffff99311cbb>] dump_stack+0x76/0xc3
[<ffffffff991d8b14>] report_size_overflow+0x6c/0x80
[<ffffffff990611a4>] track_pfn_insert+0x8c/0xb0
[<ffffffff99172ead>] vm_insert_pfn+0x85/0x130
[<ffffffffc0319f3c>] i915_gem_fault+0x3e4/0x5f0 [i915]
[<ffffffff9916de66>] __do_fault+0xae/0x190
[<ffffffff991735e9>] handle_mm_fault+0x491/0x1eb0
[<ffffffff9905aa7c>] __do_page_fault+0x204/0x5d0
[<ffffffff9905ae6a>] do_page_fault+0x22/0x40
[<ffffffff9965bb38>] page_fault+0x28/0x30
The referenced function (if I got this right):
- Code: Select all
int track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot,
pfn_t pfn)
{
enum page_cache_mode pcm;
if (!pat_enabled())
return 0;
/* Set prot based on lookup */
pcm = lookup_memtype(pfn_t_to_phys(pfn));
*prot = __pgprot((pgprot_val(vma->vm_page_prot) & (~_PAGE_CACHE_MASK)) |
cachemode2protval(pcm));
return 0;
}
The previous grsec patches worked fine (with an older kernel version).
If there's anything else I could add to help please ask.
Thanks.