Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752735AbbGNRZ5 (ORCPT ); Tue, 14 Jul 2015 13:25:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39263 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752595AbbGNRZz (ORCPT ); Tue, 14 Jul 2015 13:25:55 -0400 Date: Tue, 14 Jul 2015 12:25:53 -0500 From: Josh Poimboeuf To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" Cc: Michal Marek , Peter Zijlstra , Andy Lutomirski , Borislav Petkov , Linus Torvalds , Andi Kleen , Pedro Alves , x86@kernel.org, live-patching@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v7 0/4] Compile-time stack validation Message-ID: <20150714172553.GD4562@treble.redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23.1-rc1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 12400 Lines: 132 On Tue, Jul 14, 2015 at 12:14:06PM -0500, Josh Poimboeuf wrote: > Posting a listing of reported warnings in a reply to this email. These are the reported stackvalidate warnings on tip/master with my Fedora-based config. There were 1399 warnings in 26 .c files and 16 .S files. It was mostly repeat warnings so I removed a lot of the repeats to keep it short. stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_set_key()+0x128: call without frame pointer save/setup ...removed 29 lines... stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_set_key()+0xb9: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_enc()+0xa: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_dec()+0x11: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_ecb_enc()+0x57: call without frame pointer save/setup ...removed 5 lines... stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_cbc_dec()+0x43: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: _aesni_inc_init(): can't find starting instruction stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_ctr_enc()+0x15: call without frame pointer save/setup ...removed 6 lines... stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_ctr_enc()+0x51: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_xts_crypt8()+0xda: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: aesni_xts_crypt8()+0x1f1: call without frame pointer save/setup stackvalidate: arch/x86/crypto/aesni-intel_asm.o: _aesni_inc_init()+0x24: return instruction outside of a callable function stackvalidate: arch/x86/crypto/ghash-clmulni-intel_asm.o: clmul_ghash_mul()+0x13: call without frame pointer save/setup stackvalidate: arch/x86/crypto/ghash-clmulni-intel_asm.o: clmul_ghash_update()+0x28: call without frame pointer save/setup stackvalidate: arch/x86/crypto/crc32c-pcl-intel-asm_64.o: crc_pcl()+0x11dd: can't decode instruction stackvalidate: arch/x86/entry/entry_64.o: native_usergs_sysret64()+0x3: kernel entry/exit from callable instruction stackvalidate: arch/x86/entry/entry_64.o: .entry.text+0x329: return instruction outside of a callable function stackvalidate: arch/x86/entry/entry_64.o: .entry.text+0x1fe9: return instruction outside of a callable function stackvalidate: arch/x86/entry/entry_64.o: .entry.text+0x2015: return instruction outside of a callable function stackvalidate: arch/x86/entry/entry_64.o: .entry.text+0x2514: return instruction outside of a callable function stackvalidate: arch/x86/entry/entry_64.o: .entry.text+0x2628: return instruction outside of a callable function stackvalidate: arch/x86/entry/thunk_64.o: .text+0x53: return instruction outside of a callable function stackvalidate: arch/x86/entry/entry_64_compat.o: native_usergs_sysret32()+0x3: kernel entry/exit from callable instruction stackvalidate: arch/x86/entry/entry_64_compat.o: entry_SYSENTER_compat()+0xd: call without frame pointer save/setup stackvalidate: arch/x86/entry/entry_64_compat.o: .entry.text+0x45f: sibling call from callable instruction with changed frame pointer stackvalidate: arch/x86/entry/entry_64_compat.o: .entry.text+0x487: sibling call from callable instruction with changed frame pointer stackvalidate: arch/x86/entry/entry_64_compat.o: entry_SYSENTER_compat()+0xd7: sibling call from callable instruction with changed frame pointer stackvalidate: arch/x86/entry/entry_64_compat.o: entry_SYSENTER_compat()+0x179: sibling call from callable instruction with changed frame pointer stackvalidate: arch/x86/entry/entry_64_compat.o: .entry.text+0x5de: return instruction outside of a callable function stackvalidate: arch/x86/kernel/mcount_64.o: .entry.text+0x0: return instruction outside of a callable function stackvalidate: arch/x86/kernel/mcount_64.o: .entry.text+0xbb: return instruction outside of a callable function stackvalidate: arch/x86/kernel/mcount_64.o: .entry.text+0x2b7: return instruction outside of a callable function stackvalidate: arch/x86/kernel/tsc.o: unsynchronized_tsc()+0x5f: call without frame pointer save/setup stackvalidate: arch/x86/kernel/process.o: set_tsc_mode()+0x55: call without frame pointer save/setup stackvalidate: arch/x86/kernel/acpi/wakeup_64.o: do_suspend_lowlevel()+0x6: call without frame pointer save/setup stackvalidate: arch/x86/kernel/acpi/wakeup_64.o: do_suspend_lowlevel()+0x95: call without frame pointer save/setup stackvalidate: arch/x86/kernel/cpu/common.o: debug_stack_reset()+0x70: call without frame pointer save/setup stackvalidate: arch/x86/kernel/cpu/common.o: debug_stack_reset()+0x61: call without frame pointer save/setup stackvalidate: arch/x86/kernel/cpu/common.o: debug_stack_reset()+0x31: call without frame pointer save/setup stackvalidate: arch/x86/kernel/cpu/amd.o: .text+0x0: return instruction outside of a callable function stackvalidate: arch/x86/kernel/cpu/mcheck/mce.o: mce_wrmsrl.constprop.30()+0x3f: call without frame pointer save/setup stackvalidate: arch/x86/kernel/kprobes/core.o: kretprobe_trampoline_holder()+0x1d: duplicate frame pointer save stackvalidate: arch/x86/kernel/kprobes/core.o: kprobe_exceptions_notify()+0x2d: call without frame pointer save/setup stackvalidate: arch/x86/kernel/kprobes/core.o: kretprobe_trampoline_holder()+0x53: function has unreachable instruction stackvalidate: arch/x86/kernel/kprobes/core.o: kretprobe_trampoline_holder()+0x54: function has unreachable instruction stackvalidate: arch/x86/kernel/reboot.o: machine_real_restart()+0x5d: sibling call from callable instruction with changed frame pointer stackvalidate: arch/x86/kernel/relocate_kernel_64.o: .text+0xd6: can't find call dest symbol at offset 0xdb stackvalidate: arch/x86/kernel/paravirt.o: paravirt_end_context_switch()+0x3f: call without frame pointer save/setup stackvalidate: arch/x86/kernel/paravirt.o: paravirt_end_context_switch()+0x37: call without frame pointer save/setup stackvalidate: arch/x86/kernel/vsmp_64.o: .text+0x1d: return instruction outside of a callable function stackvalidate: arch/x86/kernel/vsmp_64.o: .text+0x3b: return instruction outside of a callable function stackvalidate: arch/x86/kernel/vsmp_64.o: .text+0x59: return instruction outside of a callable function stackvalidate: arch/x86/kernel/vsmp_64.o: .text+0x77: return instruction outside of a callable function stackvalidate: arch/x86/kernel/head_64.o: .text: unexpected end of section stackvalidate: arch/x86/kernel/head_64.o: start_cpu0()+0x13: kernel entry/exit from callable instruction stackvalidate: arch/x86/kernel/head_64.o: early_idt_handler_common()+0x59: call without frame pointer save/setup ...removed 5 lines... stackvalidate: arch/x86/kernel/head_64.o: early_idt_handler_common()+0x42: call without frame pointer save/setup stackvalidate: arch/x86/kernel/head_64.o: early_idt_handler_array()+0x9: function has unreachable instruction ...removed 140 lines... stackvalidate: arch/x86/kernel/head_64.o: early_idt_handler_array()+0x11f: function has unreachable instruction stackvalidate: arch/x86/mm/tlb.o: leave_mm()+0x5c: call without frame pointer save/setup stackvalidate: arch/x86/mm/tlb.o: do_flush_tlb_all()+0x25: call without frame pointer save/setup stackvalidate: arch/x86/mm/tlb.o: do_flush_tlb_all()+0x11: call without frame pointer save/setup stackvalidate: arch/x86/net/bpf_jit.o: .text+0x18: return instruction outside of a callable function ...removed 8 lines... stackvalidate: arch/x86/net/bpf_jit.o: .text+0x16d: return instruction outside of a callable function stackvalidate: arch/x86/platform/efi/efi_stub_64.o: efi_call()+0x7c: call without frame pointer save/setup stackvalidate: arch/x86/platform/uv/tlb_uv.o: ptc_seq_next()+0x1e: call without frame pointer save/setup stackvalidate: arch/x86/xen/enlighten.o: xen_cpuid()+0x41: can't find jump dest instruction at .text+0x108 stackvalidate: arch/x86/xen/mmu.o: .text+0x1d: return instruction outside of a callable function ...removed 6 lines... stackvalidate: arch/x86/xen/mmu.o: .text+0xef: return instruction outside of a callable function stackvalidate: arch/x86/xen/irq.o: xen_halt()+0x0: call without frame pointer save/setup stackvalidate: arch/x86/xen/irq.o: xen_halt()+0x1d: call without frame pointer save/setup stackvalidate: arch/x86/xen/irq.o: .text+0x1d: return instruction outside of a callable function stackvalidate: arch/x86/xen/irq.o: .text+0x3b: return instruction outside of a callable function stackvalidate: arch/x86/xen/irq.o: .text+0x59: return instruction outside of a callable function stackvalidate: arch/x86/xen/irq.o: .text+0x77: return instruction outside of a callable function stackvalidate: arch/x86/xen/time.o: xen_vcpuop_set_mode()+0x36: call without frame pointer save/setup stackvalidate: arch/x86/xen/time.o: xen_vcpuop_set_mode()+0x49: call without frame pointer save/setup stackvalidate: arch/x86/xen/time.o: xen_vcpuop_set_mode()+0x1d: call without frame pointer save/setup stackvalidate: arch/x86/xen/time.o: xen_timerop_set_mode()+0x26: call without frame pointer save/setup stackvalidate: arch/x86/xen/xen-asm.o: .text+0x7f: return instruction outside of a callable function stackvalidate: arch/x86/xen/xen-asm_64.o: .text+0xa: return instruction outside of a callable function stackvalidate: kernel/softirq.o: __tasklet_hi_schedule_first()+0x5: call without frame pointer save/setup stackvalidate: kernel/bpf/core.o: __bpf_prog_run()+0x5c: sibling call from callable instruction with changed frame pointer stackvalidate: kernel/bpf/core.o: __bpf_prog_run()+0x60: function has unreachable instruction ...removed 1092 lines... stackvalidate: kernel/bpf/core.o: __bpf_prog_run()+0x12dc: function has unreachable instruction stackvalidate: kernel/locking/lockdep.o: trace_hardirqs_off_caller()+0x31: call without frame pointer save/setup stackvalidate: kernel/sched/core.o: __schedule()+0x3e7: duplicate frame pointer save stackvalidate: kernel/sched/core.o: __schedule()+0x424: sibling call from callable instruction with changed frame pointer stackvalidate: kernel/sched/core.o: __schedule()+0x431: call without frame pointer save/setup stackvalidate: kernel/sched/core.o: __schedule()+0x8b8: frame pointer state mismatch stackvalidate: kernel/sched/core.o: __schedule()+0x447: frame pointer state mismatch stackvalidate: kernel/sched/core.o: preempt_schedule_irq()+0x17: call without frame pointer save/setup stackvalidate: kernel/sched/rt.o: set_cpus_allowed_rt()+0x1b: call without frame pointer save/setup stackvalidate: kernel/irq_work.o: irq_work_run_list()+0x0: call without frame pointer save/setup stackvalidate: mm/slub.o: check_slab()+0x5: call without frame pointer save/setup stackvalidate: mm/huge_memory.o: split_huge_page_address()+0x30: call without frame pointer save/setup stackvalidate: mm/huge_memory.o: split_huge_page_address()+0x6d: call without frame pointer save/setup stackvalidate: fs/buffer.o: __find_get_block()+0x5: call without frame pointer save/setup stackvalidate: drivers/xen/sys-hypervisor.o: pagesize_show()+0xf: call without frame pointer save/setup stackvalidate: drivers/xen/sys-hypervisor.o: minor_show()+0xc: call without frame pointer save/setup stackvalidate: drivers/xen/sys-hypervisor.o: major_show()+0xc: call without frame pointer save/setup stackvalidate: arch/x86/power/hibernate_asm_64.o: .text+0x69: return instruction outside of a callable function stackvalidate: arch/x86/power/hibernate_asm_64.o: .text+0x16d: return instruction outside of a callable function stackvalidate: lib/percpu_counter.o: __percpu_counter_compare()+0x1e: call without frame pointer save/setup stackvalidate: arch/x86/lib/rwsem.o: call_rwsem_down_read_failed()+0xf: call without frame pointer save/setup stackvalidate: arch/x86/lib/rwsem.o: call_rwsem_down_write_failed()+0xe: call without frame pointer save/setup stackvalidate: arch/x86/lib/rwsem.o: call_rwsem_wake()+0x12: call without frame pointer save/setup stackvalidate: arch/x86/lib/rwsem.o: call_rwsem_downgrade_wake()+0xf: call without frame pointer save/setup -- Josh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/