22 Nov, 2010

2 commits

  • Commit 7c63984b86 (ARM: do not define VMALLOC_END relative to PAGE_OFFSET)
    changed VMALLOC_END to be an explicit value. Before this, it was
    relative to PAGE_OFFSET and therefore converted to unsigned long
    as PAGE_OFFSET is an unsigned long. This introduced the following
    build warning. Fix this by changing the explicit defines of
    VMALLOC_END to be unsigned long.

    CC arch/arm/mm/init.o
    arch/arm/mm/init.c: In function 'mem_init':
    arch/arm/mm/init.c:606: warning: format '%08lx' expects type 'long unsigned int', but argument 12 has type 'unsigned int'

    Signed-off-by: Anand Gadiyar
    Acked-by: Uwe Kleine-K
    Acked-by: Nicolas Pitre
    Signed-off-by: Russell King

    Anand Gadiyar
     
  • This change updates the ux500 specific outer cache code to use
    the new *_relaxed() I/O accessors.

    Signed-off-by: Per Fransson
    Signed-off-by: Russell King

    Per Fransson
     

21 Nov, 2010

1 commit

  • Allow the compiler to better optimize the page table walking code
    by avoiding over-complex pmd_addr_end() calculations. These
    calculations prevent the compiler spotting that we'll never iterate
    over the PMD table, causing it to create double nested loops where
    a single loop will do.

    Signed-off-by: Russell King

    Russell King
     

19 Nov, 2010

12 commits


18 Nov, 2010

20 commits

  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc: Update a BKL related comment
    powerpc/mm: Fix module instruction tlb fault handling on Book-E 64
    powerpc: Fix call to subpage_protection()
    powerpc: Set CONFIG_32BIT on ppc32
    powerpc/mm: Fix build error in setup_initial_memory_limit
    powerpc/pseries: Don't override CONFIG_PPC_PSERIES_DEBUG
    powerpc: Fix div64 in bootloader

    Linus Torvalds
     
  • The commit 5e3d20a remove bkl from startup code so setup_arch() it isn't called
    with bkl held anymore. Update the comment on top of that function.
    Fix also a typo.

    This work was supported by a hardware donation from the CE Linux Forum.

    Signed-off-by: Alessio Igor Bogani
    Signed-off-by: Benjamin Herrenschmidt

    Alessio Igor Bogani
     
  • We were seeing oops like the following when we did an rmmod on a module:

    Unable to handle kernel paging request for instruction fetch
    Faulting instruction address: 0x8000000000008010
    Oops: Kernel access of bad area, sig: 11 [#1]
    SMP NR_CPUS=2 P5020 DS
    last sysfs file: /sys/devices/qman-portals.2/qman-pool.9/uevent
    Modules linked in: qman_tester(-)
    NIP: 8000000000008010 LR: c000000000074858 CTR: 8000000000008010
    REGS: c00000002e29bab0 TRAP: 0400 Not tainted
    (2.6.34.6-00744-g2d21f14)
    MSR: 0000000080029000 CR: 24000448 XER: 00000000
    TASK = c00000007a8be600[4987] 'rmmod' THREAD: c00000002e298000 CPU: 1
    GPR00: 8000000000008010 c00000002e29bd30 8000000000012798 c00000000035fb28
    GPR04: 0000000000000002 0000000000000002 0000000024022428 c000000000009108
    GPR08: fffffffffffffffe 800000000000a618 c0000000003c13c8 0000000000000000
    GPR12: 0000000022000444 c00000000fffed00 0000000000000000 0000000000000000
    GPR16: 00000000100c0000 0000000000000000 00000000100dabc8 0000000010099688
    GPR20: 0000000000000000 00000000100cfc28 0000000000000000 0000000010011a44
    GPR24: 00000000100017b2 0000000000000000 0000000000000000 0000000000000880
    GPR28: c00000000035fb28 800000000000a7b8 c000000000376d80 c0000000003cce50
    NIP [8000000000008010] .test_exit+0x0/0x10 [qman_tester]
    LR [c000000000074858] .SyS_delete_module+0x1f8/0x2f0
    Call Trace:
    [c00000002e29bd30] [c0000000000748b4] .SyS_delete_module+0x254/0x2f0 (unreliable)
    [c00000002e29be30] [c000000000000580] syscall_exit+0x0/0x2c
    Instruction dump:
    XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
    38600000 4e800020 60000000 60000000 60000000 60000000 60000000
    ---[ end trace 4f57124939a84dc8 ]---

    This appears to be due to checking the wrong permission bits in the
    instruction_tlb_miss handling if the address that faulted was in vmalloc
    space. We need to look at the supervisor execute (_PAGE_BAP_SX) bit and
    not the user bit (_PAGE_BAP_UX/_PAGE_EXEC).

    Also removed a branch level since it did not appear to be used.

    Reported-by: Jeffrey Ladouceur
    Signed-off-by: Kumar Gala
    Signed-off-by: Benjamin Herrenschmidt

    Kumar Gala
     
  • In:
    powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT
    commit d28513bc7f675d28b479db666d572e078ecf182d
    Author: David Gibson

    subpage_protection() was changed to to take an mm rather a pgdir but it
    didn't change calling site in hashpage_preload(). The change wasn't
    noticed at compile time since hashpage_preload() used a void* as the
    parameter to subpage_protection().

    This is obviously wrong and can trigger the following crash when
    CONFIG_SLAB, CONFIG_DEBUG_SLAB, CONFIG_PPC_64K_PAGES
    CONFIG_PPC_SUBPAGE_PROT are enabled.

    Freeing unused kernel memory: 704k freed
    Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6c49b7
    Faulting instruction address: 0xc0000000000410f4
    cpu 0x2: Vector: 300 (Data Access) at [c00000004233f590]
    pc: c0000000000410f4: .hash_preload+0x258/0x338
    lr: c000000000041054: .hash_preload+0x1b8/0x338
    sp: c00000004233f810
    msr: 8000000000009032
    dar: 6b6b6b6b6b6c49b7
    dsisr: 40000000
    current = 0xc00000007e2c0070
    paca = 0xc000000007fe0500
    pid = 1, comm = init
    enter ? for help
    [c00000004233f810] c000000000041020 .hash_preload+0x184/0x338 (unreliable)
    [c00000004233f8f0] c00000000003ed98 .update_mmu_cache+0xb0/0xd0
    [c00000004233f990] c000000000157754 .__do_fault+0x48c/0x5dc
    [c00000004233faa0] c000000000158fd0 .handle_mm_fault+0x508/0xa8c
    [c00000004233fb90] c0000000006acdd4 .do_page_fault+0x428/0x6ac
    [c00000004233fe30] c000000000005260 handle_page_fault+0x20/0x74

    Signed-off-by: Benjamin Herrenschmidt

    Michael Neuling
     
  • commit ffe8018c3424892c9590048fc36caa6c3e0c8a76 of the -mm tree
    fixes the initramfs size calculation for e.g. s390 but breaks it
    for 32bit architectures which do not define CONFIG_32BIT.

    This patch fix the problem for PPC32 which will elsewise end up
    with a __initramfs_size of 0.

    Signed-off-by: Kerstin Jonsson
    Signed-off-by: Benjamin Herrenschmidt

    kerstin jonsson
     
  • arch/powerpc/mm/tlb_nohash.c: In function 'setup_initial_memory_limit':
    arch/powerpc/mm/tlb_nohash.c:588:29: error: 'ppc64_memblock_base' undeclared (first use in this function)
    arch/powerpc/mm/tlb_nohash.c:588:29: note: each undeclared identifier is reported only once for each function it appears in

    Due to a copy/paste typo with the following commit:

    commit cd3db0c4ca3d237e7ad20f7107216e575705d2b0
    Author: Benjamin Herrenschmidt
    Date: Tue Jul 6 15:39:02 2010 -0700

    memblock: Remove rmo_size, burry it in arch/powerpc where it belongs

    Signed-off-by: Kumar Gala
    Signed-off-by: Benjamin Herrenschmidt

    Kumar Gala
     
  • EEH and pci_dlpar #undef DEBUG, but I think they were added before the
    ability to control this from Kconfig. It's really annoying to only get
    some of the debug messages from these files. Leave the lpar.c #undef
    alone as it produces so much output as to make the kernel unusable.
    Update the Kconfig text to indicate this particular quirk :)

    Signed-off-by: Nishanth Aravamudan
    Acked-by: Michael Ellerman
    Signed-off-by: Benjamin Herrenschmidt

    Nishanth Aravamudan
     
  • The code is missing a fix that went into the main kernel variant
    (we should try to share that code again at some stage)

    Reported-by: Albert Cahalan
    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Commit 451a3c24b013 ("BKL: remove extraneous #include ")
    removed the #include line that was the only thing that was surrounded by
    the #ifdef/#endif.

    So now that #ifdef is guarding nothing at all. Just remove it.

    Reported-by: Byeong-ryeol Kim
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Arnd Bergmann did an automated scripting run to find left-over instances
    of , and had made it trigger it on the normal BKL use
    of lock_kernel and unlock_lernel (and apparently release_kernel_lock and
    reacquire_kernel_lock too, used by the scheduler).

    That resulted in commit 451a3c24b013 ("BKL: remove extraneous #include
    ").

    However, hardirq.h was the only remaining user of the old
    'kernel_locked()' interface, and Arnd's script hadn't checked for that.
    So depending on your configuration and what header files had been
    included, you would get errors like "implicit declaration of function
    'kernel_locked'" during the build.

    The right fix is not to just re-instate the smp_lock.h include - it is
    to just remove 'kernel_locked()' entirely, since the only use was this
    one special low-level detail. Just make hardirq.h do it directly.

    In fact this simplifies and clarifies the code, because some trivial
    analysis makes it clear that hardirq.h only ever used _one_ of the two
    definitions of kernel_locked(), so we can remove the other one entirely.

    Reported-by: Zimny Lech
    Reported-and-acked-by: Randy Dunlap
    Acked-by: Arnd Bergmann
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • We now use load_gs_index() to load gs safely; unfortunately this also
    changes MSR_KERNEL_GS_BASE, which we managed separately. This resulted
    in confusion and breakage running 32-bit host userspace on a 64-bit kernel.

    Fix by
    - saving guest MSR_KERNEL_GS_BASE before we we reload the host's gs
    - doing the host save/load unconditionally, instead of only when in guest
    long mode

    Things can be cleaned up further, but this is the minmal fix for now.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • If fs or gs refer to the ldt, they must be reloaded after the ldt. Reorder
    the code to that effect.

    Userspace code that uses the ldt with kvm is nonexistent, so this doesn't fix
    a user-visible bug.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • Commit ff10b88b5a05c8f1646dd15fb9f6093c1384ff6d (kgdb,ppc: Individual
    register get/set for ppc) introduced a problem where memcpy was used
    incorrectly to read and write the evr registers with a kernel that
    has:

    CONFIG_FSL_BOOKE=y
    CONFIG_SPE=y
    CONFIG_KGDB=y

    This patch also fixes the following compilation problems:

    arch/powerpc/kernel/kgdb.c: In function 'dbg_get_reg':
    arch/powerpc/kernel/kgdb.c:341: error: passing argument 2 of 'memcpy' makes pointer from integer without a cast
    arch/powerpc/kernel/kgdb.c: In function 'dbg_set_reg':
    arch/powerpc/kernel/kgdb.c:366: error: passing argument 1 of 'memcpy' makes pointer from integer without a cast

    [jason.wessel@windriver.com: Remove void * casts and fix patch header]
    Reported-by: Milton Miller
    Signed-off-by: Dongdong Deng
    Acked-by: Kumar Gala
    Signed-off-by: Jason Wessel
    CC: linuxppc-dev@lists.ozlabs.org

    Dongdong Deng
     
  • The fix from ba773f7c510c0b252145933926c636c439889207
    (x86,kgdb: Fix hw breakpoint regression) was not entirely complete.

    The kgdb_remove_all_hw_break() function also needs to call the
    hw_break_release_slot() or else a breakpoint can get activated again
    after the debugger has detached.

    The kgdb test suite exposes the behavior in the form of either a hang
    or repetitive failure. The kernel config that exposes the problem
    contains all of the following:

    CONFIG_DEBUG_RODATA=y
    CONFIG_KGDB_TESTS=y
    CONFIG_KGDB_TESTS_ON_BOOT=y
    CONFIG_KGDB_TESTS_BOOT_STRING="V1F100"

    Reported-by: Frederic Weisbecker
    Signed-off-by: Jason Wessel
    Tested-by: Frederic Weisbecker

    Jason Wessel
     
  • When the number of dyanmic kdb commands exceeds KDB_BASE_CMD_MAX, the
    kernel will fault.

    Signed-off-by: Jovi Zhang
    Signed-off-by: Jason Wessel

    Jovi Zhang
     
  • Call kfree in the error path as well as the success path in kdb_ll().

    Signed-off-by: Jovi Zhang
    Signed-off-by: Jason Wessel

    Jovi Zhang
     
  • cmd->serial_number is never tested in any path we reach; therefore we may
    remove the call to scsi_cmd_get_serial() inside DEF_SCSI_QCMD, the SCSI
    host_lock acquisition surrounding it, and our own SCSI host_lock
    unlock+relock cycle.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • Lock_kernel is gone from the code, so the comments should be updated,
    too. nfsd now uses lock_flocks instead of lock_kernel to protect
    against posix file locks.

    Signed-off-by: Arnd Bergmann
    Acked-by: J. Bruce Fields
    Cc: linux-nfs@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • The big kernel lock has been removed from all these files at some point,
    leaving only the #include.

    Remove this too as a cleanup.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • The stradis driver is on its way out, but it should still be marked
    correctly as depending on the big kernel lock. It could easily be
    changed to not require it if someone decides to revive the driver and
    port it to v4l2 in the process.

    Signed-off-by: Arnd Bergmann
    Reported-by: Sedat Dilek
    Cc: Nathan Laredo
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

17 Nov, 2010

5 commits

  • Making /proc/kallsyms readable only for root by default makes it
    slightly harder for attackers to write generic kernel exploits by
    removing one source of knowledge where things are in the kernel.

    This is the second submit, discussion happened on this on first submit
    and mostly concerned that this is just one hole of the sieve ... but
    one of the bigger ones.

    Changing the permissions of at least System.map and vmlinux is also
    required to fix the same set, but a packaging issue.

    Target of this starter patch and follow ups is removing any kind of
    kernel space address information leak from the kernel.

    [ Side note: the default of root-only reading is the "safe" value, and
    it's easy enough to then override at any time after boot. The /proc
    filesystem allows root to change the permissions with a regular
    chmod, so you can "revert" this at run-time by simply doing

    chmod og+r /proc/kallsyms

    as root if you really want regular users to see the kernel symbols.
    It does help some tools like "perf" figure them out without any
    setup, so it may well make sense in some situations. - Linus ]

    Signed-off-by: Marcus Meissner
    Acked-by: Tejun Heo
    Acked-by: Eugene Teo
    Reviewed-by: Jesper Juhl
    Signed-off-by: Linus Torvalds

    Marcus Meissner
     
  • * 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
    nfs: Ignore kmemleak false positive in nfs_readdir_make_qstr
    SUNRPC: Simplify rpc_alloc_iostats by removing pointless local variable
    nfs: trivial: remove unused nfs_wait_event macro
    NFS: readdir shouldn't read beyond the reply returned by the server
    NFS: Fix a couple of regressions in readdir.
    Revert "NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR"
    Regression: fix mounting NFS when NFSv3 support is not compiled
    NLM: Fix a regression in lockd

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

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: Fix cross-sched-class wakeup preemption
    sched: Fix runnable condition for stoptask
    sched: Use group weight, idle cpu metrics to fix imbalances during idle

    Linus Torvalds
     
  • * 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
    PM / PM QoS: Fix reversed min and max
    PM / OPP: Hide OPP configuration when SoCs do not provide an implementation
    PM: Allow devices to be removed during late suspend and early resume

    Linus Torvalds
     
  • * 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    futex: Address compiler warnings in exit_robust_list

    Linus Torvalds