07 May, 2011

8 commits

  • To be able to relocate the .bss section at run time independently from
    the rest of the code, we must make sure that no GOTOFF relocations are
    used with .bss symbols. This usually means that no global variables can
    be marked static unless they're also const.

    Let's remove the static qualifier from current offenders, or turn them
    into const variables when possible. Next commit will ensure the build
    fails if one of those is reintroduced due to otherwise enforced coding
    standards for the kernel.

    Signed-off-by: Nicolas Pitre
    Tested-by: Tony Lindgren

    Nicolas Pitre
     
  • If decompress() returns an error without calling error(), we must
    not attempt to boot the resulting kernel.

    Signed-off-by: Nicolas Pitre
    Tested-by: Shawn Guo
    Tested-by: Tony Lindgren

    Nicolas Pitre
     
  • The return value for decompress_kernel() is no longer used. Furthermore,
    this was obtained and stored in a variable called output_ptr which is
    a complete misnomer for what is actually the size of the decompressed
    kernel image. Let's get rid of it.

    Signed-off-by: Nicolas Pitre
    Tested-by: Shawn Guo
    Tested-by: Tony Lindgren

    Nicolas Pitre
     
  • In commit d239b1dc093d the hardcoded 4x estimate for the decompressed
    kernel size was replaced by the exact Image file size and passed to
    the linker as a symbol value. Turns out that this is unneeded as the
    size is already included at the end of the compressed piggy data.
    For those compressed formats that don't include this data, the build
    system already takes care of appending it using size_append in
    scripts/Makefile.lib. So let's use that instead.

    Signed-off-by: Nicolas Pitre
    Tested-by: Shawn Guo
    Tested-by: Tony Lindgren

    Nicolas Pitre
     
  • For correctness, the initial page table located right before the
    decompressed kernel should be considered when determining if relocation
    is required.

    Signed-off-by: Nicolas Pitre
    Tested-by: Shawn Guo
    Acked-by: Tony Lindgren

    Nicolas Pitre
     
  • If the zImage load address is slightly below the relocation address,
    there is a risk for the copied data to overwrite the copy loop or
    cache flush code that the relocation process requires. Always
    bump the relocation address by the size of that code to avoid this
    issue.

    Noticed by Tony Lindgren .

    While at it, let's start the copy from the restart symbol which makes
    the above code size computation possible by the assembler directly
    (same sections), given that we don't need to preserve the code before
    that point anyway. And therefore we don't need to carry the _start
    pointer in r5 anymore.

    Signed-off-by: Nicolas Pitre
    Tested-by: Tony Lindgren

    Nicolas Pitre
     
  • Otherwise cache_clean_flush can overwrite some of the relocated
    area depending on where the kernel image gets loaded. This fixes
    booting on n900 after commit 6d7d0ae51574943bf571d269da3243257a2d15db
    (ARM: 6750/1: improvements to compressed/head.S).

    Thanks to Aaro Koskinen for debugging
    the address of the relocated area that gets corrupted, and to
    Nicolas Pitre for the other uncompress
    related fixes.

    Signed-off-by: Tony Lindgren
    Signed-off-by: Nicolas Pitre

    Tony Lindgren
     
  • With ARMv5+ and EABI, the compiler expects a 64-bit aligned stack so
    instructions like STRD and LDRD can be used. Without this, mysterious
    boot failures were seen semi randomly with the LZMA decompressor.

    While at it, let's align .bss as well.

    Signed-off-by: Nicolas Pitre
    Tested-by: Shawn Guo
    Acked-by: Tony Lindgren
    CC: stable@kernel.org

    Nicolas Pitre
     

30 Mar, 2011

9 commits

  • Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (26 commits)
    mmc: SDHI should depend on SUPERH || ARCH_SHMOBILE
    mmc: tmio_mmc: Move some defines into a shared header
    mmc: tmio: support aggressive clock gating
    mmc: tmio: fix power-mode interpretation
    mmc: tmio: remove work-around for unmasked SDIO interrupts
    sh: fix SDHI IO address-range
    ARM: mach-shmobile: fix SDHI IO address-range
    mmc: tmio: only access registers above 0xff, if available
    mfd: remove now redundant sh_mobile_sdhi.h header
    sh: convert boards to use linux/mmc/sh_mobile_sdhi.h
    ARM: mach-shmobile: convert boards to use linux/mmc/sh_mobile_sdhi.h
    mmc: tmio: convert the SDHI MMC driver from MFD to a platform driver
    sh: ecovec: use the CONFIG_MMC_TMIO symbols instead of MFD
    mmc: tmio: split core functionality, DMA and MFD glue
    mmc: tmio: use PIO for short transfers
    mmc: tmio-mmc: Improve DMA stability on sh-mobile
    mmc: fix mmc_app_send_scr() for dma transfer
    mmc: sdhci-esdhc: enable esdhc on imx53
    mmc: sdhci-esdhc: use writel/readl as general APIs
    mmc: sdhci: add the abort CMDTYPE bits definition
    ...

    Linus Torvalds
     
  • * 'frv' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-frv:
    FRV: Use generic show_interrupts()
    FRV: Convert genirq namespace
    frv: Select GENERIC_HARDIRQS_NO_DEPRECATED
    frv: Convert cpu irq_chip to new functions
    frv: Convert mb93493 irq_chip to new functions
    frv: Convert mb93093 irq_chip to new function
    frv: Convert mb93091 irq_chip to new functions
    frv: Fix typo from __do_IRQ overhaul
    frv: Remove stale irq_chip.end
    FRV: Do some cleanups
    FRV: Missing node arg in alloc_thread_info_node() macro
    NOMMU: implement access_remote_vm
    NOMMU: support SMP dynamic percpu_alloc
    NOMMU: percpu should use is_vmalloc_addr().

    Linus Torvalds
     
  • * 'stable/bug-fixes-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen: Use new irq_move functions
    xen: Convert genirq namespace
    xen: fix p2m section mismatches
    xen/p2m: Allocate p2m tracking pages on override
    xen-gntdev: unlock on error path in gntdev_mmap()
    xen-gntdev: return -EFAULT on copy_to_user failure

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
    watchdog: softdog.c: enhancement to optionally invoke panic instead of reboot on timer expiry
    watchdog: fix nv_tco section mismatch
    watchdog: sp5100_tco.c: Check if firmware has set correct value in tcobase.
    watchdog: Convert release_resource to release_region/release_mem_region
    watchdog: s3c2410_wdt.c: Convert release_resource to release_region/release_mem_region

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
    amd64_edac: Fix potential memleak

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (111 commits)
    gpio: ab8500: Mark broken
    genirq: Remove move_*irq leftovers
    genirq: Remove compat code
    drivers: Final irq namespace conversion
    mn10300: Use generic show_interrupts()
    mn10300: Cleanup irq_desc access
    mn10300: Convert genirq namespace
    frv: Use generic show_interrupts()
    frv: Convert genirq namespace
    frv: Select GENERIC_HARDIRQS_NO_DEPRECATED
    frv: Convert cpu irq_chip to new functions
    frv: Convert mb93493 irq_chip to new functions
    frv: Convert mb93093 irq_chip to new function
    frv: Convert mb93091 irq_chip to new functions
    frv: Fix typo from __do_IRQ overhaul
    frv: Remove stale irq_chip.end
    m68k: Convert irq function namespace
    xen: Use new irq_move functions
    xen: Cleanup genirq namespace
    unicore32: Use generic show_interrupts()
    ...

    Linus Torvalds
     
  • This patch fixes information leakage to the userspace by initializing
    the data buffer to zero.

    Reported-by: Peter Huewe
    Signed-off-by: Peter Huewe
    Signed-off-by: Marcel Selhorst
    [ Also removed the silly "* sizeof(u8)". If that isn't 1, we have way
    deeper problems than a simple multiplication can fix. - Linus ]
    Signed-off-by: Linus Torvalds

    Peter Huewe
     
  • We check the pointers together but at least one of them could be invalid
    due to failed allocation. Since we cannot continue if either of the two
    allocations has failed, exit early by freeing them both.

    Cc: # 38.x
    Reported-by: Mauro Carvalho Chehab
    Signed-off-by: Borislav Petkov

    Borislav Petkov
     

29 Mar, 2011

23 commits

  • Fix the incorrect use of igrab() inside the i_lock in NFS and Ceph‥

    If we are already holding the i_lock, we have a reference to the
    inode so we can safely use ihold() to gain an extra reference. This
    avoids hangs due to lock recursion on the i_lock now that the
    inode_lock is gone and igrab() uses the i_lock itself.

    Signed-off-by: Dave Chinner
    Cc: Al Viro
    Cc: linux-fsdevel@vger.kernel.org
    Cc: Ryan Mallon
    Signed-off-by: Linus Torvalds

    Dave Chinner
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (30 commits)
    xfrm: Restrict extended sequence numbers to esp
    xfrm: Check for esn buffer len in xfrm_new_ae
    xfrm: Assign esn pointers when cloning a state
    xfrm: Move the test on replay window size into the replay check functions
    netdev: bfin_mac: document TE setting in RMII modes
    drivers net: Fix declaration ordering in inline functions.
    cxgb3: Apply interrupt coalescing settings to all queues
    net: Always allocate at least 16 skb frags regardless of page size
    ipv4: Don't ip_rt_put() an error pointer in RAW sockets.
    net: fix ethtool->set_flags not intended -EINVAL return value
    mlx4_en: Fix loss of promiscuity
    tg3: Fix inline keyword usage
    tg3: use and instead and
    net: use CHECKSUM_NONE instead of magic number
    Net / jme: Do not use legacy PCI power management
    myri10ge: small rx_done refactoring
    bridge: notify applications if address of bridge device changes
    ipv4: Fix IP timestamp option (IPOPT_TS_PRESPEC) handling in ip_options_echo()
    can: c_can: Fix tx_bytes accounting
    can: c_can_platform: fix irq check in probe
    ...

    Linus Torvalds
     
  • These functions take irq_data as an argument and avoid a redundant
    lookup in the sparse irq case.

    Signed-off-by: Thomas Gleixner
    Cc: Ian Campbell
    Cc: Jeremy Fitzhardinge
    Cc: Konrad Rzeszutek Wilk
    Signed-off-by: Konrad Rzeszutek Wilk

    Thomas Gleixner
     
  • Converted with coccinelle.

    Signed-off-by: Thomas Gleixner
    Acked-by: Ian Campbell
    Signed-off-by: Konrad Rzeszutek Wilk

    Thomas Gleixner
     
  • Fix section mismatch warnings:
    set_phys_range_identity() is called by __init xen_set_identity(),
    so also mark set_phys_range_identity() as __init.
    then:
    __early_alloc_p2m() is called set_phys_range_identity(), so also mark
    __early_alloc_p2m() as __init.

    WARNING: arch/x86/built-in.o(.text+0x7856): Section mismatch in reference from the function __early_alloc_p2m() to the function .init.text:extend_brk()
    The function __early_alloc_p2m() references
    the function __init extend_brk().
    This is often because __early_alloc_p2m lacks a __init
    annotation or the annotation of extend_brk is wrong.

    WARNING: arch/x86/built-in.o(.text+0x7967): Section mismatch in reference from the function set_phys_range_identity() to the function .init.text:extend_brk()
    The function set_phys_range_identity() references
    the function __init extend_brk().
    This is often because set_phys_range_identity lacks a __init
    annotation or the annotation of extend_brk is wrong.

    [v2: Per Stephen Hemming recommonedation made __early_alloc_p2m static]
    Signed-off-by: Randy Dunlap
    Signed-off-by: Konrad Rzeszutek Wilk

    Randy Dunlap
     
  • Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Convert to new function names. Converted with coccinelle.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • All chips converted

    Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • Compiles way better.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • irq_chip.end got obsolete with the removal of __do_IRQ().

    irq-mb93093.c even lacks an implementation, but nobody noticed that
    it's broken since commit 88d6e1 in 2006.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: David Howells

    Thomas Gleixner
     
  • 1. frv doesn't support SMP, remove the useless SMP bits.

    2. frv has its own alloc_task_struct, so define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
    (I am not sure if frv should use generic alloc_task_struct().)

    Signed-off-by: WANG Cong
    Signed-off-by: David Howells

    Amerigo Wang
     
  • There are two alloc_thread_info_node() macros defined (one for debugging and
    one for normal). The commit that changed them most recently:

    commit b6a84016bd2598e35ead635147fa53619982648d
    Author: Eric Dumazet
    Date: Tue Mar 22 16:30:42 2011 -0700
    Subject: mm: NUMA aware alloc_thread_info_node()

    didn't add the node argument into the macro argument list for the normal macro.
    This results in the following error:

    kernel/fork.c:267:39: error: macro "alloc_thread_info_node" passed 2 arguments, but takes just 1
    kernel/fork.c: In function 'dup_task_struct':
    kernel/fork.c:267: error: 'alloc_thread_info_node' undeclared (first use in this function)
    kernel/fork.c:267: error: (Each undeclared identifier is reported only once
    kernel/fork.c:267: error: for each function it appears in.)

    Signed-off-by: David Howells

    David Howells
     
  • Recent vm changes brought in a new function which the core procfs code
    utilizes. So implement it for nommu systems too to avoid link failures.

    Signed-off-by: Mike Frysinger
    Signed-off-by: David Howells
    Tested-by: Simon Horman
    Tested-by: Ithamar Adema
    Acked-by: Greg Ungerer

    Mike Frysinger
     
  • This driver is broken in several aspects.

    1) old style irq_chip functions. Sigh

    2) Abuse of the unlock callback. That's not supposed to be a state
    machine for evrything and some more.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • All users converted to new interface.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Scripted with coccinelle.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • The migration needs only access to irq_data.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner