1. 07 Jun, 2016 1 commit
    • Emese Revfy's avatar
      GCC plugin infrastructure · 6b90bd4b
      Emese Revfy authored
      This patch allows to build the whole kernel with GCC plugins. It was ported from
      grsecurity/PaX. The infrastructure supports building out-of-tree modules and
      building in a separate directory. Cross-compilation is supported too.
      Currently the x86, arm, arm64 and uml architectures enable plugins.
      
      The directory of the gcc plugins is scripts/gcc-plugins. You can use a file or a directory
      there. The plugins compile with these options:
       * -fno-rtti: gcc is compiled with this option so the plugins must use it too
       * -fno-exceptions: this is inherited from gcc too
       * -fasynchronous-unwind-tables: this is inherited from gcc too
       * -ggdb: it is useful for debugging a plugin (better backtrace on internal
          errors)
       * -Wno-narrowing: to suppress warnings from gcc headers (ipa-utils.h)
       * -Wno-unused-variable: to suppress warnings from gcc headers (gcc_version
          variable, plugin-version.h)
      
      The infrastructure introduces a new Makefile target called gcc-plugins. It
      supports all gcc versions from 4.5 to 6.0. The scripts/gcc-plugin.sh script
      chooses the proper host compiler (gcc-4.7 can be built by either gcc or g++).
      This script also checks the availability of the included headers in
      scripts/gcc-plugins/gcc-common.h.
      
      The gcc-common.h header contains frequently included headers for GCC plugins
      and it has a compatibility layer for the supported gcc versions.
      
      The gcc-generate-*-pass.h headers automatically generate the registration
      structures for GIMPLE, SIMPLE_IPA, IPA and RTL passes.
      
      Note that 'make clean' keeps the *.so files (only the distclean or mrproper
      targets clean all) because they are needed for out-of-tree modules.
      
      Based on work created by the PaX Team.
      Signed-off-by: default avatarEmese Revfy <re.emese@gmail.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      6b90bd4b
  2. 26 Feb, 2016 1 commit
  3. 28 Sep, 2015 1 commit
    • Ben Hutchings's avatar
      DocBook: Use a fixed encoding for output · b479bfd0
      Ben Hutchings authored
      Currently the encoding of documents generated by DocBook depends on
      the current locale.  Make the output reproducible independently of
      the locale, by setting the encoding to UTF-8 (LC_CTYPE=C.UTF-8) by
      preference, or ASCII (LC_CTYPE=C) as a fallback.
      
      LC_CTYPE can normally be overridden by LC_ALL, but the top-level
      Makefile unsets that.
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [jc: added check-lc_ctype to .gitignore]
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      b479bfd0
  4. 12 Aug, 2015 1 commit
  5. 07 Aug, 2015 2 commits
    • David Woodhouse's avatar
      modsign: Extract signing cert from CONFIG_MODULE_SIG_KEY if needed · 1329e8cc
      David Woodhouse authored
      Where an external PEM file or PKCS#11 URI is given, we can get the cert
      from it for ourselves instead of making the user drop signing_key.x509
      in place for us.
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      1329e8cc
    • David Howells's avatar
      MODSIGN: Use PKCS#7 messages as module signatures · 3f1e1bea
      David Howells authored
      Move to using PKCS#7 messages as module signatures because:
      
       (1) We have to be able to support the use of X.509 certificates that don't
           have a subjKeyId set.  We're currently relying on this to look up the
           X.509 certificate in the trusted keyring list.
      
       (2) PKCS#7 message signed information blocks have a field that supplies the
           data required to match with the X.509 certificate that signed it.
      
       (3) The PKCS#7 certificate carries fields that specify the digest algorithm
           used to generate the signature in a standardised way and the X.509
           certificates specify the public key algorithm in a standardised way - so
           we don't need our own methods of specifying these.
      
       (4) We now have PKCS#7 message support in the kernel for signed kexec purposes
           and we can make use of this.
      
      To make this work, the old sign-file script has been replaced with a program
      that needs compiling in a previous patch.  The rules to build it are added
      here.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Tested-by: default avatarVivek Goyal <vgoyal@redhat.com>
      3f1e1bea
  6. 17 Feb, 2015 1 commit
    • Jan Kiszka's avatar
      scripts/gdb: add infrastructure · 3ee7b3fa
      Jan Kiszka authored
      This provides the basic infrastructure to load kernel-specific python
      helper scripts when debugging the kernel in gdb.
      
      The loading mechanism is based on gdb loading for <objfile>-gdb.py when
      opening <objfile>.  Therefore, this places a corresponding link to the
      main helper script into the output directory that contains vmlinux.
      
      The main scripts will pull in submodules containing Linux specific gdb
      commands and functions.  To avoid polluting the source directory with
      compiled python modules, we link to them from the object directory.
      
      Due to gdb.parse_and_eval and string redirection for gdb.execute, we
      depend on gdb >= 7.2.
      
      This feature is enabled via CONFIG_GDB_SCRIPTS.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      Acked-by: Michal Marek <mmarek@suse.cz>		[kbuild stuff]
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jason Wessel <jason.wessel@windriver.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Cc: Borislav Petkov <bp@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3ee7b3fa
  7. 08 Aug, 2014 1 commit
    • Vivek Goyal's avatar
      bin2c: move bin2c in scripts/basic · 8370edea
      Vivek Goyal authored
      This patch series does not do kernel signature verification yet.  I plan
      to post another patch series for that.  Now distributions are already
      signing PE/COFF bzImage with PKCS7 signature I plan to parse and verify
      those signatures.
      
      Primary goal of this patchset is to prepare groundwork so that kernel
      image can be signed and signatures be verified during kexec load.  This
      should help with two things.
      
      - It should allow kexec/kdump on secureboot enabled machines.
      
      - In general it can help even without secureboot. By being able to verify
        kernel image signature in kexec, it should help with avoiding module
        signing restrictions. Matthew Garret showed how to boot into a custom
        kernel, modify first kernel's memory and then jump back to old kernel and
        bypass any policy one wants to.
      
      This patch (of 15):
      
      Kexec wants to use bin2c and it wants to use it really early in the build
      process. See arch/x86/purgatory/ code in later patches.
      
      So move bin2c in scripts/basic so that it can be built very early and
      be usable by arch/x86/purgatory/
      Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Cc: Greg Kroah-Hartman <greg@kroah.com>
      Cc: Dave Young <dyoung@redhat.com>
      Cc: WANG Chao <chaowang@redhat.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8370edea
  8. 09 Jun, 2014 1 commit
  9. 14 Mar, 2014 1 commit
  10. 08 Oct, 2012 1 commit
    • David Howells's avatar
      X.509: Add simple ASN.1 grammar compiler · 4520c6a4
      David Howells authored
      Add a simple ASN.1 grammar compiler.  This produces a bytecode output that can
      be fed to a decoder to inform the decoder how to interpret the ASN.1 stream it
      is trying to parse.
      
      Action functions can be specified in the grammar by interpolating:
      
      	({ foo })
      
      after a type, for example:
      
      	SubjectPublicKeyInfo ::= SEQUENCE {
      		algorithm		AlgorithmIdentifier,
      		subjectPublicKey	BIT STRING ({ do_key_data })
      		}
      
      The decoder is expected to call these after matching this type and parsing the
      contents if it is a constructed type.
      
      The grammar compiler does not currently support the SET type (though it does
      support SET OF) as I can't see a good way of tracking which members have been
      encountered yet without using up extra stack space.
      
      Currently, the grammar compiler will fail if more than 256 bytes of bytecode
      would be produced or more than 256 actions have been specified as it uses
      8-bit jump values and action indices to keep space usage down.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      4520c6a4
  11. 19 May, 2012 1 commit
    • H. Peter Anvin's avatar
      x86, realmode: 16-bit real-mode code support for relocs tool · 6520fe55
      H. Peter Anvin authored
      A new option is added to the relocs tool called '--realmode'.
      This option causes the generation of 16-bit segment relocations
      and 32-bit linear relocations for the real-mode code. When
      the real-mode code is moved to the low-memory during kernel
      initialization, these relocation entries can be used to
      relocate the code properly.
      
      In the assembly code 16-bit segment relocations must be relative
      to the 'real_mode_seg' absolute symbol. Linear relocations must be
      relative to a symbol prefixed with 'pa_'.
      
      16-bit segment relocation is used to load cs:ip in 16-bit code.
      Linear relocations are used in the 32-bit code for relocatable
      data references. They are declared in the linker script of the
      real-mode code.
      
      The relocs tool is moved to arch/x86/tools/relocs.c, and added new
      target archscripts that can be used to build scripts needed building
      an architecture.  be compiled before building the arch/x86 tree.
      
      [ hpa: accelerating this because it detects invalid absolute
        relocations, a serious bug in binutils 2.22.52.0.x which currently
        produces bad kernels. ]
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.comSigned-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Cc: <stable@vger.kernel.org>
      6520fe55
  12. 08 May, 2012 2 commits
  13. 24 Apr, 2012 1 commit
  14. 19 Apr, 2012 1 commit
  15. 02 May, 2011 1 commit
  16. 17 Mar, 2011 1 commit
    • Mike Waychison's avatar
      KBuild: silence "'scripts/unifdef' is up to date." · e1b702cf
      Mike Waychison authored
      While changing our build system over to use the headers_install target
      as part of our klibc build, the following message started showing up in
      our logs:
      
      make[2]: `scripts/unifdef' is up to date.
      
      It turns out that the build blindly invokes a recursive make on this
      target, which causes make to emit this message when the target is
      already up to date.  This isn't seen for most targets as the rest of the
      build relies primarily on the default target and on PHONY targets when
      invoking make recursively.
      
      Silence the above message when building unifdef as part of
      headers_install by hiding it behind a new PHONY target called
      "build_unifdef" that has an empty recipe.
      Signed-off-by: default avatarMike Waychison <mikew@google.com>
      Acked-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      e1b702cf
  17. 14 Oct, 2010 1 commit
    • Steven Rostedt's avatar
      ftrace/x86: Add support for C version of recordmcount · 72441cb1
      Steven Rostedt authored
      This patch adds the support for the C version of recordmcount and
      compile times show ~ 12% improvement.
      
      After verifying this works, other archs can add:
      
       HAVE_C_MCOUNT_RECORD
      
      in its Kconfig and it will use the C version of recordmcount
      instead of the perl version.
      
      Cc: <linux-arch@vger.kernel.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: linux-kbuild@vger.kernel.org
      Cc: John Reiser <jreiser@bitwagon.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      72441cb1
  18. 16 Sep, 2009 1 commit
    • David S. Miller's avatar
      sparc: Kill PROM console driver. · 09d3f3f0
      David S. Miller authored
      Many years ago when this driver was written, it had a use, but these
      days it's nothing but trouble and distributions should not enable it
      in any situation.
      
      Pretty much every console device a sparc machine could see has a
      bonafide real driver, making the PROM console hack unnecessary.
      
      If any new device shows up, we should write a driver instead of
      depending upon this crutch to save us.  We've been able to take care
      of this even when no chip documentation exists (sunxvr500, sunxvr2500)
      so there are no excuses.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      09d3f3f0
  19. 02 May, 2009 1 commit
    • David Gibson's avatar
      Move dtc and libfdt sources from arch/powerpc/boot to scripts/dtc · 9fffb55f
      David Gibson authored
      The powerpc kernel always requires an Open Firmware like device tree
      to supply device information.  On systems without OF, this comes from
      a flattened device tree blob.  This blob is usually generated by dtc,
      a tool which compiles a text description of the device tree into the
      flattened format used by the kernel.  Sometimes, the bootwrapper makes
      small changes to the pre-compiled device tree blob (e.g. filling in
      the size of RAM).  To do this it uses the libfdt library.
      
      Because these are only used on powerpc, the code for both these tools
      is included under arch/powerpc/boot (these were imported and are
      periodically updated from the upstream dtc tree).
      
      However, the microblaze architecture, currently being prepared for
      merging to mainline also uses dtc to produce device tree blobs.  A few
      other archs have also mentioned some interest in using dtc.
      Therefore, this patch moves dtc and libfdt from arch/powerpc into
      scripts, where it can be used by any architecture.
      
      The vast bulk of this patch is a literal move, the rest is adjusting
      the various Makefiles to use dtc and libfdt correctly from their new
      locations.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9fffb55f
  20. 06 Apr, 2009 1 commit
  21. 07 Jan, 2009 1 commit
    • Sam Ravnborg's avatar
      fix modules_install via NFS · 8b249b68
      Sam Ravnborg authored
      Rafael reported:
      
      I get the following error from 'make modules_install' on my test boxes:
      
        HOSTCC  firmware/ihex2fw
      /home/rafael/src/linux-2.6/firmware/ihex2fw.c:268: fatal error: opening dependency file firmware/.ihex2fw.d: Read-only file system
      compilation terminated.
      make[3]: *** [firmware/ihex2fw] Error 1
      make[2]: *** [_modinst_post] Error 2
      make[1]: *** [sub-make] Error 2
      make: *** [all] Error 2
      
      where the configuration is that the kernel is compiled on a build box
      with 'make O=<destdir> -j5' and then <destdir> is mounted over NFS read-only by
      each test box (full path to this directory is the same on the build box and on
      the test boxes).  Then, I cd into <destdir>, run 'make modules_install' and get
      the error above.
      
      The issue turns out to be that we when we install firmware pick
      up the list of firmware blobs from firmware/Makefile.
      And this triggers the Makefile rules to update ihex2fw.
      
      There were two solutions for this issue:
      1) Move the list of firmware blobs to a separate file
      2) Avoid ihex2fw rebuild by moving it to scripts
      
      As I seriously beleive that the list of firmware blobs should be
      done in a fundamental different way solution 2) was selected.
      Reported-and-tested-by: default avatar"Rafael J. Wysocki" <rjw@sisk.pl>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: David Woodhouse <dwmw2@infradead.org>
      8b249b68
  22. 26 Aug, 2008 1 commit
    • Serge E. Hallyn's avatar
      selinux: add support for installing a dummy policy (v2) · 93c06cbb
      Serge E. Hallyn authored
      In August 2006 I posted a patch generating a minimal SELinux policy.  This
      week, David P. Quigley posted an updated version of that as a patch against
      the kernel.  It also had nice logic for auto-installing the policy.
      
      Following is David's original patch intro (preserved especially
      bc it has stats on the generated policies):
      
      se interested in the changes there were only two significant
      changes. The first is that the iteration through the list of classes
      used NULL as a sentinel value. The problem with this is that the
      class_to_string array actually has NULL entries in its table as place
      holders for the user space object classes.
      
      The second change was that it would seem at some point the initial sids
      table was NULL terminated. This is no longer the case so that iteration
      has to be done on array length instead of looking for NULL.
      
      Some statistics on the policy that it generates:
      
      The policy consists of 523 lines which contain no blank lines. Of those
      523 lines 453 of them are class, permission, and initial sid
      definitions. These lines are usually little to no concern to the policy
      developer since they will not be adding object classes or permissions.
      Of the remaining 70 lines there is one type, one role, and one user
      statement. The remaining lines are broken into three portions. The first
      group are TE allow rules which make up 29 of the remaining lines, the
      second is assignment of labels to the initial sids which consist of 27
      lines, and file system labeling statements which are the remaining 11.
      
      In addition to the policy.conf generated there is a single file_contexts
      file containing two lines which labels the entire system with base_t.
      
      This policy generates a policy.23 binary that is 7920 bytes.
      
      (then a few versions later...):
      
      The new policy is 587 lines (stripped of blank lines) with 476 of those
      lines being the boilerplate that I mentioned last time. The remaining
      111 lines have the 3 lines for type, user, and role, 70 lines for the
      allow rules (one for each object class including user space object
      classes), 27 lines to assign types to the initial sids, and 11 lines for
      file system labeling. The policy binary is 9194 bytes.
      
      Changelog:
      
      	Aug 26: Added Documentation/SELinux.txt
      	Aug 26: Incorporated a set of comments by Stephen Smalley:
      		1. auto-setup SELINUXTYPE=dummy
      		2. don't auto-install if selinux is enabled with
      			non-dummy policy
      		3. don't re-compute policy version
      		4. /sbin/setfiles not /usr/sbin/setfiles
      	Aug 22: As per JMorris comments, made sure make distclean
      		cleans up the mdp directory.
      		Removed a check for file_contexts which is now
      		created in the same file as the check, making it
      		superfluous.
      Signed-off-by: default avatarSerge Hallyn <serue@us.ibm.com>
      Signed-off-by: default avatarDavid Quigley <dpquigl@tycho.nsa.gov>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      93c06cbb
  23. 01 Oct, 2006 1 commit
    • Ross Biro's avatar
      [PATCH] allow /proc/config.gz to be built as a module · f2443ab6
      Ross Biro authored
      The driver for /proc/config.gz consumes rather a lot of memory and it is in
      fact possible to build it as a module.
      
      In some ways this is a bit risky, because the .config which is used for
      compiling kernel/configs.c isn't necessarily the same as the .config which was
      used to build vmlinux.
      
      But OTOH the potential memory savings are decent, and it'd be fairly dumb to
      build your configs.o with a different .config.
      Signed-off-by: default avatarAndrew Morton <akpm@google.com>
      Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      f2443ab6
  24. 25 Sep, 2006 2 commits
  25. 16 Dec, 2005 1 commit
  26. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4