1. 20 12月, 2013 1 次提交
    • K
      stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG · 8779657d
      Kees Cook 提交于
      This changes the stack protector config option into a choice of
      "None", "Regular", and "Strong":
      
         CONFIG_CC_STACKPROTECTOR_NONE
         CONFIG_CC_STACKPROTECTOR_REGULAR
         CONFIG_CC_STACKPROTECTOR_STRONG
      
      "Regular" means the old CONFIG_CC_STACKPROTECTOR=y option.
      
      "Strong" is a new mode introduced by this patch. With "Strong" the
      kernel is built with -fstack-protector-strong (available in
      gcc 4.9 and later). This option increases the coverage of the stack
      protector without the heavy performance hit of -fstack-protector-all.
      
      For reference, the stack protector options available in gcc are:
      
      -fstack-protector-all:
        Adds the stack-canary saving prefix and stack-canary checking
        suffix to _all_ function entry and exit. Results in substantial
        use of stack space for saving the canary for deep stack users
        (e.g. historically xfs), and measurable (though shockingly still
        low) performance hit due to all the saving/checking. Really not
        suitable for sane systems, and was entirely removed as an option
        from the kernel many years ago.
      
      -fstack-protector:
        Adds the canary save/check to functions that define an 8
        (--param=ssp-buffer-size=N, N=8 by default) or more byte local
        char array. Traditionally, stack overflows happened with
        string-based manipulations, so this was a way to find those
        functions. Very few total functions actually get the canary; no
        measurable performance or size overhead.
      
      -fstack-protector-strong
        Adds the canary for a wider set of functions, since it's not
        just those with strings that have ultimately been vulnerable to
        stack-busting. With this superset, more functions end up with a
        canary, but it still remains small compared to all functions
        with only a small change in performance. Based on the original
        design document, a function gets the canary when it contains any
        of:
      
          - local variable's address used as part of the right hand side
            of an assignment or function argument
          - local variable is an array (or union containing an array),
            regardless of array type or length
          - uses register local variables
      
        https://docs.google.com/a/google.com/document/d/1xXBH6rRZue4f296vGt9YQcuLVQHeE516stHwt8M9xyU
      
      Find below a comparison of "size" and "objdump" output when built with
      gcc-4.9 in three configurations:
      
        - defconfig
      	11430641 kernel text size
      	36110 function bodies
      
        - defconfig + CONFIG_CC_STACKPROTECTOR_REGULAR
      	11468490 kernel text size (+0.33%)
      	1015 of 36110 functions are stack-protected (2.81%)
      
        - defconfig + CONFIG_CC_STACKPROTECTOR_STRONG via this patch
      	11692790 kernel text size (+2.24%)
      	7401 of 36110 functions are stack-protected (20.5%)
      
      With -strong, ARM's compressed boot code now triggers stack
      protection, so a static guard was added. Since this is only used
      during decompression and was never used before, the exposure
      here is very small. Once it switches to the full kernel, the
      stack guard is back to normal.
      
      Chrome OS has been using -fstack-protector-strong for its kernel
      builds for the last 8 months with no problems.
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-mips@linux-mips.org
      Cc: linux-arch@vger.kernel.org
      Link: http://lkml.kernel.org/r/1387481759-14535-3-git-send-email-keescook@chromium.org
      [ Improved the changelog and descriptions some more. ]
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      8779657d
  2. 20 10月, 2013 2 次提交
  3. 17 9月, 2013 1 次提交
    • L
      ARM: delete mach-shark · 136dfa5e
      Linus Walleij 提交于
      The Shark machine sub-architecture (also known as DNARD, the
      DIGITAL Network Appliance Reference Design) lacks a maintainer
      able to apply and test patches to modernize the architecture.
      
      It is suspected that the current kernel, while it compiles,
      does not even boot on this machine. The listed maintainer has
      expressed that he will not be able to spend any time on the
      maintenance for the coming year.
      
      So let's delete it from the kernel for now. It can always be
      resurrected with git revert if maintenance is resumed.
      
      As the VIA82c505 PCI adapter was only used by this
      architecture, that gets deleted too.
      
      Cc: arm@kernel.org
      Cc: Alexander Schulz <alex@shark-linux.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      136dfa5e
  4. 17 7月, 2013 1 次提交
  5. 10 7月, 2013 1 次提交
  6. 28 6月, 2013 1 次提交
    • G
      lib: Move fonts from drivers/video/console/ to lib/fonts/ · ee89bd6b
      Geert Uytterhoeven 提交于
      Several drivers need font support independent of CONFIG_VT, cfr. commit
      9cbce8d7e1dae0744ca4f68d62aa7de18196b6f4, "console/font: Refactor font
      support code selection logic").
      Hence move the fonts and their support logic from drivers/video/console/ to
      its own library directory lib/fonts/.
      This also allows to limit processing of drivers/video/console/Makefile to
      CONFIG_VT=y again.
      
      [Kevin Hilman <khilman@linaro.org>: Update arch/arm/boot/compressed/Makefile]
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      ee89bd6b
  7. 24 6月, 2013 1 次提交
  8. 17 6月, 2013 2 次提交
  9. 12 6月, 2013 2 次提交
  10. 06 6月, 2013 3 次提交
    • M
      ARM: 7750/1: update legacy CPU ID in decompressor cache support jump table · ced2a3b8
      Marc C 提交于
      The previous mask values for the legacy ARM CPU IDs were conflicting
      with the CPU ID assignments for late-generation CPUs (like the
      Qualcomm MSM/QSD or Broadcom Brahma-15 processors). This change
      corrects the legacy ARM CPU ID value so that the jump table can
      fall-through to the appropriate cache maintenance / MMU functions.
      Signed-off-by: NMarc C <marc.ceeeee@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ced2a3b8
    • A
      ARM: 7743/1: compressed/head.S: work around new binutils warning · da94a829
      Arnd Bergmann 提交于
      In August 2012, Matthew Gretton-Dann checked a change into binutils
      labelled "Error on obsolete & warn on deprecated registers", apparently as
      part of ARMv8 support. Apparently, this was supposed to emit the message
      "Warning: This coprocessor register access is deprecated in ARMv8" when
      using certain mcr/mrc instructions and building for ARMv8. Unfortunately,
      the message that is actually emitted appears to be '(null)', which is
      less helpful in comparison.
      
      Even more unfortunately, this is biting us on every single kernel
      build with a new gas, because arch/arm/boot/compressed/head.S and some
      other files in that directory are built with -march=all since kernel
      commit 80cec14a "[ARM] Add -march=all to assembly file build in
      arch/arm/boot/compressed" back in v2.6.28.
      
      This patch reverts Russell's nice solution and instead marks the head.S
      file to be built for armv7-a, which fortunately lets us build all
      instructions in that file without warnings even on the broken binutils.
      
      Without this patch, building anything results in:
      
      arch/arm/boot/compressed/head.S: Assembler messages:
      arch/arm/boot/compressed/head.S:565: Warning: (null)
      arch/arm/boot/compressed/head.S:676: Warning: (null)
      arch/arm/boot/compressed/head.S:698: Warning: (null)
      arch/arm/boot/compressed/head.S:722: Warning: (null)
      arch/arm/boot/compressed/head.S:726: Warning: (null)
      arch/arm/boot/compressed/head.S:957: Warning: (null)
      arch/arm/boot/compressed/head.S:996: Warning: (null)
      arch/arm/boot/compressed/head.S:997: Warning: (null)
      arch/arm/boot/compressed/head.S:1027: Warning: (null)
      arch/arm/boot/compressed/head.S:1035: Warning: (null)
      arch/arm/boot/compressed/head.S:1046: Warning: (null)
      arch/arm/boot/compressed/head.S:1060: Warning: (null)
      arch/arm/boot/compressed/head.S:1092: Warning: (null)
      arch/arm/boot/compressed/head.S:1094: Warning: (null)
      arch/arm/boot/compressed/head.S:1095: Warning: (null)
      arch/arm/boot/compressed/head.S:1102: Warning: (null)
      arch/arm/boot/compressed/head.S:1134: Warning: (null)
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: stable@vger.kernel.org
      Cc: Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      da94a829
    • N
      ARM: 7737/1: fix kernel decompressor compilation error with CONFIG_DEBUG_SEMIHOSTING · 27523679
      Nicolas Pitre 提交于
      Selecting this option produces:
      
        AS      arch/arm/boot/compressed/debug.o
      arch/arm/boot/compressed/debug.S:4:33: fatal error: mach/debug-macro.S: No such file or directory
      compilation terminated.
      make[3]: *** [arch/arm/boot/compressed/debug.o] Error 1
      
      The semihosting support cannot be modelled into a senduart macro as
      it requires memory space for argument passing.  So the
      CONFIG_DEBUG_LL_INCLUDE may not have any sensible value and the include
      directive should be omitted.
      
      While at it, let's add proper semihosting output support to the
      decompressor.
      Signed-off-by: NNicolas Pitre <nico@linaro.org>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      27523679
  11. 16 5月, 2013 1 次提交
    • G
      ARM: 7722/1: zImage: Convert 32bits memory size and address from ATAG to 64bits DTB · faefd550
      Gregory CLEMENT 提交于
      When CONFIG_ARM_APPENDED_DTB is selected, if the bootloader provides
      an ATAG_MEM it replaces the memory size and the memory address in the
      memory node of the device tree. In the case of a system which can
      handle more than 4GB, the memory node cell size is 4: each data
      (memory size and memory address) are 64 bits and then use 2 cells.
      
      The current code in atags_to_fdt.c made the assumption of a cell size
      of 2 (one cell for the memory size and one cell for the memory
      address), this leads to an improper write of the data and ends with a
      boot hang.
      
      This patch writes the memory size and the memory address on the memory
      node in the device tree depending of the size of the memory node (32
      bits or 64 bits).
      
      It has been tested in the 2 cases:
      - with a dtb using skeleton.dtsi
      - and with a dtb using skeleton64.dtsi
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      faefd550
  12. 16 3月, 2013 2 次提交
    • S
      ARM: 7672/1: uncompress debug support for multiplatform build · 3b4af9bc
      Shawn Guo 提交于
      Instead of giving zero support of uncompress debug for multiplatform
      build, the patch turns uncompress debug into one part of DEBUG_LL
      support.  When DEBUG_LL is turned on for a particular platform,
      uncompress debug works too for that platform.
      
      OMAP and Tegra are exceptions here.  OMAP low-level debug code places
      data in the .data section, and that is not allowed in decompressor.
      And Tegra code has reference to variable that's unavailable in
      decompressor but only in kernel.  That's why Kconfig symbol
      DEBUG_UNCOMPRESS controlling multiplatform uncompress debug support is
      defined with !DEBUG_OMAP2PLUS_UART && !DEBUG_TEGRA_UART.
      
      It creates arch/arm/boot/compressed/debug.S with CONFIG_DEBUG_LL_INCLUDE
      included there, implements a generic putc() using those macros, which
      will be built when DEBUG_UNCOMPRESS is defined.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3b4af9bc
    • S
      ARM: 7671/1: use Kconfig to select uncompress.h · 615967b0
      Shawn Guo 提交于
      Following the approach handling DEBUG_LL inclusion, the patch creates
      a Kconfig symbol CONFIG_UNCOMPRESS_INCLUDE for choosing the correct
      uncompress header.  For traditional build, mach/uncompress.h will be
      included in arch/arm/boot/compressed/misc.c.  For multiplatform build,
      debug/uncompress.h which contains a suite of empty functions will be
      used.  In this way, a platform with particular uncompress.h
      implementation could choose its own uncompress.h with this Kconfig
      option.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      615967b0
  13. 07 3月, 2013 1 次提交
    • J
      ARM: 7666/1: decompressor: add -mno-single-pic-base for building the decompressor · b8083f86
      Jonathan Austin 提交于
      Before jumping to (position independent) C-code from the decompressor's
      assembler world we set-up the C environment. This setup currently does not
      set r9, which for arm-none-uclinux-uclibceabi toolchains is by default
      expected to be the PIC offset base register (IE should point to the
      beginning of the GOT).
      
      Currently, therefore, in order to build working kernels that use the
      decompressor it is necessary to use an arm-linux-gnueabi toolchain, or
      similar. uClinux toolchains cause a prefetch abort to occur at the beginning
      of the decompress_kernel function.
      
      This patch allows uClinux toolchains to build bootable zImages by forcing
      the -mno-single-pic-base option, which ensures that the location of the GOT
      is re-derived each time it is required, and r9 becomes free for use as a
      general purpose register.
      
      This has a small (4% in instruction terms) advantage over the alternative of
      setting r9 to point to the GOT before calling into the C-world.
      Signed-off-by: NJonathan Austin <jonathan.austin@arm.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b8083f86
  14. 11 1月, 2013 1 次提交
  15. 16 12月, 2012 1 次提交
  16. 23 11月, 2012 1 次提交
    • D
      ARM: 7583/1: decompressor: Enable unaligned memory access for v6 and above · 5010192d
      Dave Martin 提交于
      Modern GCC can generate code which makes use of the CPU's native
      unaligned memory access capabilities.  This is useful for the C
      decompressor implementations used for unpacking compressed kernels.
      
      This patch disables alignment faults and enables the v6 unaligned
      access model on CPUs which support these features (i.e., v6 and
      later), allowing full unaligned access support for C code in the
      decompressor.
      
      The decompressor C code must not be built to assume that unaligned
      access works if support for v5 or older platforms is included in
      the kernel.
      
      For correct code generation, C decompressor code must always use
      the get_unaligned and put_unaligned accessors when dealing with
      unaligned pointers, regardless of this patch.
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      5010192d
  17. 21 11月, 2012 1 次提交
  18. 15 10月, 2012 1 次提交
  19. 19 9月, 2012 1 次提交
    • D
      ARM: zImage/virt: hyp mode entry support for the zImage loader · 424e5994
      Dave Martin 提交于
      The zImage loader needs to turn on the MMU in order to take
      advantage of caching while decompressing the zImage.  Running this
      in hyp mode would require the LPAE pagetable format to be
      supported; to avoid this complexity, this patch switches out of hyp
      mode, and returns back to hyp mode just before booting the kernel.
      
      This implementation assumes that the Hyp mode view of memory and the
      PL1 view of memory are coherent, providing that the MMU and caches
      are off in both, as required by the boot protocol.  The zImage
      decompression code must drain the write buffer on completion anyway, and
      entry into Hyp mode should flush any prefetch buffer, avoiding hazards
      associated with local write buffers and the pipeline.
      Signed-off-by: NDave Martin <dave.martin@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      424e5994
  20. 16 9月, 2012 1 次提交
  21. 14 9月, 2012 1 次提交
    • R
      ARM: initial multiplatform support · 387798b3
      Rob Herring 提交于
      This lets us build a multiplatform kernel for experimental purposes.
      However, it will not be useful for any real work, because it relies
      on a number of useful things to be disabled for now:
      
      * SMP support must be turned off because of conflicting symbols.
        Marc Zyngier has proposed a solution by adding a new SOC
        operations structure to hold indirect function pointers
        for these, but that work is currently stalled
      
      * We turn on SPARSE_IRQ unconditionally, which is not supported
        on most platforms. Each of them is currently in a different
        state, but most are being worked on.
      
      * A common clock framework is in place since v3.4 but not yet
        being used. Work on this is on its way.
      
      * DEBUG_LL for early debugging is currently disabled.
      
      * THUMB2_KERNEL does not work with allyesconfig because the
        kernel gets too big
      
      [Rob Herring]: Rebased to not be dependent on the mass mach header rename.
      As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
      picoxcell, mvebu, and socfpga are converted.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Acked-by: NJamie Iles <jamie@jamieiles.com>
      Cc: Dinh Nguyen <dinguyen@altera.com>
      387798b3
  22. 25 8月, 2012 2 次提交
  23. 10 7月, 2012 1 次提交
  24. 10 5月, 2012 1 次提交
  25. 09 5月, 2012 1 次提交
  26. 13 4月, 2012 2 次提交
  27. 06 4月, 2012 1 次提交
    • R
      ARM: remove ixp23xx and ixp2000 platforms · c65f2abf
      Rob Herring 提交于
      ixp2xxx platforms have had no real changes since ~2006 and the maintainer
      has said on irc that they can be removed:
      
      13:05 < nico> do you still care about ixp2000?
      13:22 < lennert> not really, no
      13:58 < nico> do you think we could remove it from the kernel tree?
      14:01 < lennert> go for it, and remove ixp23xx too while you're at it
      
      Removing will help simplify ARM consolidation in general and PCI re-work
      specifically.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Randy Dunlap <rdunlap@xenotime.net>
      Acked-by: NLennert Buytenhek <buytenh@wantstofly.org>
      c65f2abf
  28. 24 3月, 2012 1 次提交
  29. 03 3月, 2012 1 次提交
    • K
      ARM: S3C24XX: change the ARCH_S3C2410 to ARCH_S3C24XX · b130d5c2
      Kukjin Kim 提交于
      This patch changes the ARCH name to "ARCH_S3C24XX" for Samsung
      S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443,
      and S3C2450 SoCs so that we can merge the mach-xxx directories
      and plat-s3c24xx dir. to just one mach-s3c24xx for them.
      
      I think this should be sent to upstream via samsung tree because
      this touches many samsung stuff.
      
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: Chris Ball <cjb@laptop.org>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Cc: Grant Likely <grant.likely@secretlab.ca>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      [for the gadget part:]
      Acked-by: NFelipe Balbi <balbi@ti.com>
      [for the framebuffer (video) part:]
      Acked-by: NFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
      [For the watchdog-part:]
      Acked-by: NWim Van Sebroeck <wim@iguana.be>
      Cc: Sangbeom Kim <sbkim73@samsung.com>
      Cc: Liam Girdwood <lrg@ti.com>
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Russell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      b130d5c2
  30. 03 1月, 2012 1 次提交
  31. 08 12月, 2011 1 次提交
  32. 25 10月, 2011 1 次提交