On 15/1/19 5:40 pm, Dmitry Vyukov wrote:
On Tue, Jan 15, 2019 at 5:20 AM Andrew Donnellan
<andrew.donnel...@au1.ibm.com> wrote:

kcov provides kernel coverage data that's useful for fuzzing tools like
syzkaller.

Wire up kcov support on powerpc. Disable kcov instrumentation on the same
files where we currently disable gcov and UBSan instrumentation.

Signed-off-by: Andrew Donnellan <andrew.donnel...@au1.ibm.com>

Hi Andrew,

The patch looks good to me. Any reason to mail it as RFC rather than
final patch?

Acked-by: Dmitry Vyukov <dvyu...@google.com>

Thanks!

Just the issues mentioned below, but if mpe feels like merging it anyway...


Andrew


---

kcov looks like it's working okay, both kcovtrace and syzkaller seem to be
working. I did see some issues with compiling and booting kernels with gcc
6.3 and earlier versions which disappeared when I upgraded to gcc 8.2, I
need to investigate that more.

---
  arch/powerpc/Kconfig                | 1 +
  arch/powerpc/kernel/Makefile        | 7 ++++++-
  arch/powerpc/kernel/trace/Makefile  | 3 ++-
  arch/powerpc/kernel/vdso32/Makefile | 1 +
  arch/powerpc/kernel/vdso64/Makefile | 1 +
  arch/powerpc/xmon/Makefile          | 1 +
  6 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 2890d36eb531..d3698dae0e60 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -134,6 +134,7 @@ config PPC
         select ARCH_HAS_ELF_RANDOMIZE
         select ARCH_HAS_FORTIFY_SOURCE
         select ARCH_HAS_GCOV_PROFILE_ALL
+       select ARCH_HAS_KCOV
         select ARCH_HAS_PHYS_TO_DMA
         select ARCH_HAS_PMEM_API                if PPC64
         select ARCH_HAS_PTE_SPECIAL
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index cb7f0bb9ee71..961f44eabb65 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -142,16 +142,21 @@ endif
  obj-$(CONFIG_EPAPR_PARAVIRT)   += epapr_paravirt.o epapr_hcalls.o
  obj-$(CONFIG_KVM_GUEST)                += kvm.o kvm_emul.o

-# Disable GCOV & sanitizers in odd or sensitive code
+# Disable GCOV, KCOV & sanitizers in odd or sensitive code
  GCOV_PROFILE_prom_init.o := n
+KCOV_INSTRUMENT_prom_init.o := n
  UBSAN_SANITIZE_prom_init.o := n
  GCOV_PROFILE_machine_kexec_64.o := n
+KCOV_INSTRUMENT_machine_kexec_64.o := n
  UBSAN_SANITIZE_machine_kexec_64.o := n
  GCOV_PROFILE_machine_kexec_32.o := n
+KCOV_INSTRUMENT_machine_kexec_32.o := n
  UBSAN_SANITIZE_machine_kexec_32.o := n
  GCOV_PROFILE_kprobes.o := n
+KCOV_INSTRUMENT_kprobes.o := n
  UBSAN_SANITIZE_kprobes.o := n
  GCOV_PROFILE_kprobes-ftrace.o := n
+KCOV_INSTRUMENT_kprobes-ftrace.o := n
  UBSAN_SANITIZE_kprobes-ftrace.o := n
  UBSAN_SANITIZE_vdso.o := n

diff --git a/arch/powerpc/kernel/trace/Makefile 
b/arch/powerpc/kernel/trace/Makefile
index b1725ad3e13d..858503775c58 100644
--- a/arch/powerpc/kernel/trace/Makefile
+++ b/arch/powerpc/kernel/trace/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_TRACING)                 += trace_clock.o
  obj-$(CONFIG_PPC64)                    += $(obj64-y)
  obj-$(CONFIG_PPC32)                    += $(obj32-y)

-# Disable GCOV & sanitizers in odd or sensitive code
+# Disable GCOV, KCOV & sanitizers in odd or sensitive code
  GCOV_PROFILE_ftrace.o := n
+KCOV_INSTRUMENT_ftrace.o := n
  UBSAN_SANITIZE_ftrace.o := n
diff --git a/arch/powerpc/kernel/vdso32/Makefile 
b/arch/powerpc/kernel/vdso32/Makefile
index 50112d4473bb..ce199f6e4256 100644
--- a/arch/powerpc/kernel/vdso32/Makefile
+++ b/arch/powerpc/kernel/vdso32/Makefile
@@ -23,6 +23,7 @@ targets := $(obj-vdso32) vdso32.so vdso32.so.dbg
  obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32))

  GCOV_PROFILE := n
+KCOV_INSTRUMENT := n
  UBSAN_SANITIZE := n

  ccflags-y := -shared -fno-common -fno-builtin
diff --git a/arch/powerpc/kernel/vdso64/Makefile 
b/arch/powerpc/kernel/vdso64/Makefile
index 69cecb346269..28e7d112aa2f 100644
--- a/arch/powerpc/kernel/vdso64/Makefile
+++ b/arch/powerpc/kernel/vdso64/Makefile
@@ -9,6 +9,7 @@ targets := $(obj-vdso64) vdso64.so vdso64.so.dbg
  obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64))

  GCOV_PROFILE := n
+KCOV_INSTRUMENT := n
  UBSAN_SANITIZE := n

  ccflags-y := -shared -fno-common -fno-builtin
diff --git a/arch/powerpc/xmon/Makefile b/arch/powerpc/xmon/Makefile
index 878f9c1d3615..3050f9323254 100644
--- a/arch/powerpc/xmon/Makefile
+++ b/arch/powerpc/xmon/Makefile
@@ -5,6 +5,7 @@
  subdir-ccflags-y := $(call cc-disable-warning, builtin-requires-header)

  GCOV_PROFILE := n
+KCOV_INSTRUMENT := n
  UBSAN_SANITIZE := n

  # Disable ftrace for the entire directory
--
2.11.0

--
You received this message because you are subscribed to the Google Groups 
"syzkaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to syzkaller+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


--
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnel...@au1.ibm.com  IBM Australia Limited

Reply via email to