Skip to content
Snippets Groups Projects
  1. May 10, 2016
  2. Apr 27, 2016
  3. Apr 26, 2016
    • Nicolas Pitre's avatar
      kbuild: better abstract vmlinux sequential prerequisites · 2441e78b
      Nicolas Pitre authored
      
      When CONFIG_TRIM_UNUSED_KSYMS=y and CONFIG_BUILD_DOCSRC=y it is possible
      to get the following error:
      
      ERROR: "cn_del_callback" [Documentation/connector/cn_test.ko] undefined!
      ERROR: "cn_add_callback" [Documentation/connector/cn_test.ko] undefined!
      ERROR: "cn_netlink_send" [Documentation/connector/cn_test.ko] undefined!
      ../scripts/Makefile.modpost:91: recipe for target '__modpost' failed
      
      It is not sufficient to do "vmlinux-dirs += Documentation" as this also
      depends on the headers_check target, and all of this needs to be done
      before adjust_autoksyms.sh is executed.
      
      Let's sort this out by gathering those sequential prerequisites in a make
      target of their own, separate from the vmlinux target. And by doing so,
      the special autoksyms_recursive target is no longer needed.
      
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Tested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      2441e78b
    • Nicolas Ferre's avatar
      kbuild: fix call to adjust_autoksyms.sh when output directory specified · ba79d401
      Nicolas Ferre authored
      
      When a different output directory is specified during the build process (with
      O= or KBUILD_OUTPUT), the call to adjust_autoksyms.sh script fails with the
      following error:
      /bin/sh scripts/adjust_autoksyms.sh \
      	  "make KBUILD_MODULES=1 -f ../Makefile autoksyms_recursive"
      	  /bin/sh: scripts/adjust_autoksyms.sh: No such file or directory
      	  make[2]: *** [vmlinux] Error 127
      	  make[1]: *** [sub-make] Error 2
      	  make: *** [__sub-make] Error 2
      
      Using the absolute path with $(srctree) variable solves the problem.
      
      This is in case the CONFIG_TRIM_UNUSED_KSYMS option is specified.
      
      Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Fixes: 23121ca2 ("kbuild: create/adjust generated/autoksyms.h")
      Cc: Nicolas Pitre <nico@linaro.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      ba79d401
  4. Apr 20, 2016
  5. Mar 29, 2016
    • Nicolas Pitre's avatar
      kbuild: build sample modules along with the rest of the kernel · dd92478a
      Nicolas Pitre authored
      
      Make sample modules in parallel with the rest of the kernel rather
      than having them built from the vmlinux target. This makes the build
      slightly faster, and those modules are properly considered when
      adjust_autoksyms.sh is executed.
      
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      dd92478a
    • Nicolas Pitre's avatar
      kbuild: create/adjust generated/autoksyms.h · 23121ca2
      Nicolas Pitre authored
      
      Given the list of exported symbols needed by all modules, we can create
      a header file containing preprocessor defines for each of those symbols.
      Also, when some symbols are added and/or removed from the list, we can
      update the time on the corresponding files used as build dependencies for
      those symbols. And finally, if any symbol did change state, the
      corresponding source files must be rebuilt.
      
      The insertion or removal of an EXPORT_SYMBOL() entry within a module may
      create or remove the need for another exported symbol.  This is why this
      operation has to be repeated until the list of needed exported symbols
      becomes stable. Only then the final kernel and modules link take place.
      
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      23121ca2
    • Nicolas Pitre's avatar
      export.h: allow for per-symbol configurable EXPORT_SYMBOL() · f2355416
      Nicolas Pitre authored
      
      Similar to include/generated/autoconf.h, include/generated/autoksyms.h
      will contain a list of defines for each EXPORT_SYMBOL() that we want
      active. The format is:
      
        #define __KSYM_<symbol_name> 1
      
      This list will be auto-generated with another patch.  For now we only
      include the preprocessor magic to automatically create or omit the
      corresponding struct kernel_symbol declaration.
      
      Given the content of include/generated/autoksyms.h may not be known in
      advance, an empty file is created early on to let the build proceed.
      
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      f2355416
  6. Mar 26, 2016
  7. Mar 22, 2016
    • Dmitry Vyukov's avatar
      kernel: add kcov code coverage · 5c9a8750
      Dmitry Vyukov authored
      kcov provides code coverage collection for coverage-guided fuzzing
      (randomized testing).  Coverage-guided fuzzing is a testing technique
      that uses coverage feedback to determine new interesting inputs to a
      system.  A notable user-space example is AFL
      (http://lcamtuf.coredump.cx/afl/).  However, this technique is not
      widely used for kernel testing due to missing compiler and kernel
      support.
      
      kcov does not aim to collect as much coverage as possible.  It aims to
      collect more or less stable coverage that is function of syscall inputs.
      To achieve this goal it does not collect coverage in soft/hard
      interrupts and instrumentation of some inherently non-deterministic or
      non-interesting parts of kernel is disbled (e.g.  scheduler, locking).
      
      Currently there is a single coverage collection mode (tracing), but the
      API anticipates additional collection modes.  Initially I also
      implemented a second mode which exposes coverage in a fixed-size hash
      table of counters (what Quentin used in his original patch).  I've
      dropped the second mode for simplicity.
      
      This patch adds the necessary support on kernel side.  The complimentary
      compiler support was added in gcc revision 231296.
      
      We've used this support to build syzkaller system call fuzzer, which has
      found 90 kernel bugs in just 2 months:
      
        https://github.com/google/syzkaller/wiki/Found-Bugs
      
      
      
      We've also found 30+ bugs in our internal systems with syzkaller.
      Another (yet unexplored) direction where kcov coverage would greatly
      help is more traditional "blob mutation".  For example, mounting a
      random blob as a filesystem, or receiving a random blob over wire.
      
      Why not gcov.  Typical fuzzing loop looks as follows: (1) reset
      coverage, (2) execute a bit of code, (3) collect coverage, repeat.  A
      typical coverage can be just a dozen of basic blocks (e.g.  an invalid
      input).  In such context gcov becomes prohibitively expensive as
      reset/collect coverage steps depend on total number of basic
      blocks/edges in program (in case of kernel it is about 2M).  Cost of
      kcov depends only on number of executed basic blocks/edges.  On top of
      that, kernel requires per-thread coverage because there are always
      background threads and unrelated processes that also produce coverage.
      With inlined gcov instrumentation per-thread coverage is not possible.
      
      kcov exposes kernel PCs and control flow to user-space which is
      insecure.  But debugfs should not be mapped as user accessible.
      
      Based on a patch by Quentin Casasnovas.
      
      [akpm@linux-foundation.org: make task_struct.kcov_mode have type `enum kcov_mode']
      [akpm@linux-foundation.org: unbreak allmodconfig]
      [akpm@linux-foundation.org: follow x86 Makefile layout standards]
      Signed-off-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Cc: syzkaller <syzkaller@googlegroups.com>
      Cc: Vegard Nossum <vegard.nossum@oracle.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Tavis Ormandy <taviso@google.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
      Cc: Kostya Serebryany <kcc@google.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Kees Cook <keescook@google.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: David Drysdale <drysdale@google.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
      Cc: Kirill A. Shutemov <kirill@shutemov.name>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5c9a8750
  8. Mar 15, 2016
    • Daniel Wagner's avatar
      kbuild: Add option to turn incompatible pointer check into error · ea8daa7b
      Daniel Wagner authored
      
      With the introduction of the simple wait API we have two very
      similar APIs in the kernel. For example wake_up() and swake_up()
      is only one character away. Although the compiler will warn
      happily the wrong usage it keeps on going an even links the kernel.
      Thomas and Peter would rather like to see early missuses reported
      as error early on.
      
      In a first attempt we tried to wrap all swait and wait calls
      into a macro which has an compile time type assertion. The result
      was pretty ugly and wasn't able to catch all wrong usages.
      woken_wake_function(), autoremove_wake_function() and wake_bit_function()
      are assigned as function pointers. Wrapping them with a macro around is
      not possible. Prefixing them with '_' was also not a real option
      because there some users in the kernel which do use them as well.
      All in all this attempt looked to intrusive and too ugly.
      
      An alternative is to turn the pointer type check into an error which
      catches wrong type uses. Obviously not only the swait/wait ones. That
      isn't a bad thing either.
      
      Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      ea8daa7b
  9. Mar 14, 2016
  10. Mar 06, 2016
  11. Mar 05, 2016
    • Ingo Molnar's avatar
      Revert "kbuild: Add option to turn incompatible pointer check into error" · ca031745
      Ingo Molnar authored
      This reverts commit ef50c046.
      
      So adding -Werror=incompatible-pointer-types wasn't a bad idea, but it
      should really not be done in the scheduler tree: it exposes us to a
      number of pre-existing warnings (most of them harmless), now upgraded
      to build failures...
      
      This should be done via the kbuild tree.
      
      Cc: Daniel Wagner <daniel.wagner@bmw-carit.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: linux-rt-users@vger.kernel.org
      Cc: Boqun Feng <boqun.feng@gmail.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Cc: linux-kernel@vger.kernel.org
      ca031745
    • Josh Poimboeuf's avatar
      objtool: Detect and warn if libelf is missing and don't break the build · 3b27a0c8
      Josh Poimboeuf authored
      
      With CONFIG_STACK_VALIDATION enabled, if the host system doesn't have
      a development version of libelf installed, the build fails with errors
      like:
      
        elf.h:22:18: fatal error: gelf.h: No such file or directory compilation terminated.
      
      Instead of failing to build, instead just print a warning and disable
      stack validation.
      
      Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-next@vger.kernel.org
      Cc: linux@roeck-us.net
      Cc: live-patching@vger.kernel.org
      Link: http://lkml.kernel.org/r/8c27fe00face60f42e888ddb3142c97e45223165.1457026550.git.jpoimboe@redhat.com
      
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      3b27a0c8
  12. Mar 03, 2016
  13. Feb 29, 2016
  14. Feb 28, 2016
  15. Feb 25, 2016
    • Bamvor Jian Zhang's avatar
      Makefile: add kselftest-merge · 3d6dee7a
      Bamvor Jian Zhang authored
      
      Add kselftest-merge to enable the dependencies of kernel config
      for all the kselftest testcases. User should call it after create
      the kernel configuration(.config), eg:
      
      $ make kselftest-merge
      
      Signed-off-by: default avatarBamvor Jian Zhang <bamvor.zhangjian@linaro.org>
      Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
      3d6dee7a
    • Daniel Wagner's avatar
      kbuild: Add option to turn incompatible pointer check into error · ef50c046
      Daniel Wagner authored
      
      With the introduction of the simple wait API we have two very
      similar APIs in the kernel. For example wake_up() and swake_up()
      is only one character away. Although the compiler will warn
      happily the wrong usage it keeps on going an even links the kernel.
      Thomas and Peter would rather like to see early missuses reported
      as error early on.
      
      In a first attempt we tried to wrap all swait and wait calls
      into a macro which has an compile time type assertion. The result
      was pretty ugly and wasn't able to catch all wrong usages.
      woken_wake_function(), autoremove_wake_function() and wake_bit_function()
      are assigned as function pointers. Wrapping them with a macro around is
      not possible. Prefixing them with '_' was also not a real option
      because there some users in the kernel which do use them as well.
      All in all this attempt looked to intrusive and too ugly.
      
      An alternative is to turn the pointer type check into an error which
      catches wrong type uses. Obviously not only the swait/wait ones. That
      isn't a bad thing either.
      
      Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: linux-rt-users@vger.kernel.org
      Cc: Boqun Feng <boqun.feng@gmail.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Link: http://lkml.kernel.org/r/1455871601-27484-3-git-send-email-wagi@monom.org
      
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      ef50c046
  16. Feb 20, 2016
  17. Feb 14, 2016
  18. Feb 07, 2016
  19. Feb 01, 2016
  20. Jan 24, 2016
  21. Jan 21, 2016
  22. Jan 10, 2016
  23. Jan 03, 2016
  24. Dec 28, 2015
  25. Dec 21, 2015
  26. Dec 17, 2015
  27. Dec 14, 2015
  28. Dec 10, 2015
  29. Dec 06, 2015
  30. Dec 04, 2015
  31. Nov 30, 2015
  32. Nov 23, 2015
Loading