Skip to content
  1. Mar 11, 2009
  2. Mar 10, 2009
  3. Mar 09, 2009
    • Chris Mason's avatar
      Btrfs: fix spinlock assertions on UP systems · b9447ef8
      Chris Mason authored
      
      
      btrfs_tree_locked was being used to make sure a given extent_buffer was
      properly locked in a few places.  But, it wasn't correct for UP compiled
      kernels.
      
      This switches it to using assert_spin_locked instead, and renames it to
      btrfs_assert_tree_locked to better reflect how it was really being used.
      
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      b9447ef8
    • Heiko Carstens's avatar
      Fix fixpoint divide exception in acct_update_integrals · 6d5b5acc
      Heiko Carstens authored
      
      
      Frans Pop reported the crash below when running an s390 kernel under Hercules:
      
        Kernel BUG at 000738b4  verbose debug info unavailable!
        fixpoint divide exception: 0009  #1! SMP
        Modules linked in: nfs lockd nfs_acl sunrpc ctcm fsm tape_34xx
           cu3088 tape ccwgroup tape_class ext3 jbd mbcache dm_mirror dm_log dm_snapshot
           dm_mod dasd_eckd_mod dasd_mod
        CPU: 0 Not tainted 2.6.27.19 #13
        Process awk (pid: 2069, task: 0f9ed9b8, ksp: 0f4f7d18)
        Krnl PSW : 070c1000 800738b4 (acct_update_integrals+0x4c/0x118)
                   R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:1 PM:0
        Krnl GPRS: 00000000 000007d0 7fffffff fffff830
                   00000000 ffffffff 00000002 0f9ed9b8
                   00000000 00008ca0 00000000 0f9ed9b8
                   0f9edda4 8007386e 0f4f7ec8 0f4f7e98
        Krnl Code: 800738aa: a71807d0         lhi     %r1,2000
                   800738ae: 8c200001         srdl    %r2,1
                   800738b2: 1d21             dr      %r2,%r1
                  >800738b4: 5810d10e         l       %r1,270(%r13)
                   800738b8: 1823             lr      %r2,%r3
                   800738ba: 4130f060         la      %r3,96(%r15)
                   800738be: 0de1             basr    %r14,%r1
                   800738c0: 5800f060         l       %r0,96(%r15)
        Call Trace:
        ( <000000000004fdea>! blocking_notifier_call_chain+0x1e/0x2c)
          <0000000000038502>! do_exit+0x106/0x7c0
          <0000000000038c36>! do_group_exit+0x7a/0xb4
          <0000000000038c8e>! SyS_exit_group+0x1e/0x30
          <0000000000021c28>! sysc_do_restart+0x12/0x16
          <0000000077e7e924>! 0x77e7e924
      
      Reason for this is that cpu time accounting usually only happens from
      interrupt context, but acct_update_integrals gets also called from
      process context with interrupts enabled.
      
      So in acct_update_integrals we may end up with the following scenario:
      
      Between reading tsk->stime/tsk->utime and tsk->acct_timexpd an interrupt
      happens which updates accouting values.  This causes acct_timexpd to be
      greater than the former stime + utime.  The subsequent calculation of
      
      	dtime = cputime_sub(time, tsk->acct_timexpd);
      
      will be negative and the division performed by
      
      	cputime_to_jiffies(dtime)
      
      will generate an exception since the result won't fit into a 32 bit
      register.
      
      In order to fix this just always disable interrupts while accessing any
      of the accounting values.
      
      Reported by: Frans Pop <elendil@planet.nl>
      Tested by: Frans Pop <elendil@planet.nl>
      Cc: stable@kernel.org
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6d5b5acc
    • Rusty Russell's avatar
      lguest: fix for CONFIG_SPARSE_IRQ=y · 6db6a5f3
      Rusty Russell authored
      
      
      Impact: remove lots of lguest boot WARN_ON() when CONFIG_SPARSE_IRQ=y
      
      We now need to call irq_to_desc_alloc_cpu() before
      set_irq_chip_and_handler_name(), but we can't do that from init_IRQ (no
      kmalloc available).
      
      So do it as we use interrupts instead.  Also means we only alloc for
      irqs we use, which was the intent of CONFIG_SPARSE_IRQ anyway.
      
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Cc: Ingo Molnar <mingo@redhat.com>
      6db6a5f3
    • Rusty Russell's avatar
      lguest: fix crash 'unhandled trap 13 at <native_read_msr_safe>' · cbd88c8e
      Rusty Russell authored
      
      
      Impact: fix lguest boot crash on modern Intel machines
      
      The code in early_init_intel does:
      
      	if (c->x86 > 6 || (c->x86 == 6 && c->x86_model >= 0xd)) {
      		u64 misc_enable;
      
      		rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
      
      And that rdmsr faults (not allowed from non-0 PL).  We can get around
      this by mugging the family ID part of the cpuid.  5 seems like a good
      number.
      
      Of course, this is a hack (how very lguest!).  We could just indicate
      that we don't support MSRs, or implement lguest_rdmst.
      
      Reported-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Tested-by: default avatarPatrick McHardy <kaber@trash.net>
      cbd88c8e
    • Stuart Bennett's avatar
      x86 mmiotrace: fix remove_kmmio_fault_pages() · d0fc63f7
      Stuart Bennett authored
      Impact: fix race+crash in mmiotrace
      
      The list manipulation in remove_kmmio_fault_pages() was broken. If more
      than one consecutive kmmio_fault_page was re-added during the grace
      period between unregister_kmmio_probe() and remove_kmmio_fault_pages(),
      the list manipulation failed to remove pages from the release list.
      
      After a second grace period the pages get into rcu_free_kmmio_fault_pages()
      and raise a BUG_ON() kernel crash.
      
      The list manipulation is fixed to properly remove pages from the release
      list.
      
      This bug has been present from the very beginning of mmiotrace in the
      mainline kernel. It was introduced in 0fd0e3da
      
       ("x86: mmiotrace full
      patch, preview 1");
      
      An urgent fix for Linus. Tested by Stuart (on 32-bit) and Pekka
      (on amd and intel 64-bit systems, nouveau and nvidia proprietary).
      
      Signed-off-by: default avatarStuart Bennett <stuart@freedesktop.org>
      Signed-off-by: default avatarPekka Paalanen <pq@iki.fi>
      LKML-Reference: <20090308202135.34933feb@daedalus.pq.iki.fi>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d0fc63f7
    • Linus Torvalds's avatar
    • Linus Torvalds's avatar
      Merge branch 'core-fixes-for-linus' of... · dbb9be8a
      Linus Torvalds authored
      Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        rcu: increment quiescent state counter in ksoftirqd()
      dbb9be8a
    • Linus Torvalds's avatar
      Merge branch 'x86-fixes-for-linus' of... · 05e12a69
      Linus Torvalds authored
      Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, pebs: correct qualifier passed to ds_write_config() from ds_request_pebs()
        x86, bts: remove bad warning
        x86: add Dell XPS710 reboot quirk
        x86, math-emu: fix init_fpu for task != current
        x86: EFI: Back efi_ioremap with init_memory_mapping instead of FIX_MAP
        x86: fix DMI on EFI
      05e12a69
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog · cd3c1cde
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
        [WATCHDOG] orion5x_wdt.c: 'ORION5X_TCLK' undeclared
        [WATCHDOG] gef_wdt.c: fsl_get_sys_freq() failure not noticed
        [WATCHDOG] ks8695_wdt.c: 'CLOCK_TICK_RATE' undeclared
        [WATCHDOG] rc32434_wdt: fix sections
        [WATCHDOG] rc32434_wdt: fix watchdog driver
      cd3c1cde
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 5b61f6ac
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        ext4: fix ext4_free_inode() vs. ext4_claim_inode() race
      5b61f6ac
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 · 14016899
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (28 commits)
        Blackfin arch: SPI_MMC is now mainlined MMC_SPI
        Blackfin arch: disable legacy /proc/scsi/ support by default
        Blackfin arch: remove duplicated ANOMALY_05000448 ifdef check
        Blackfin arch: add stubs for anomalies 447 and 448
        Blackfin arch: cleanup bfin_sport.h header and export it to userspace
        Blackfin arch: fix bug - gdb signull case make trunk kernel panic frequently
        Blackfin arch: remove spurious dash when dcache is off
        Blackfin arch: mark init_pda as __init as only __init funcs all it
        Blackfin arch: fix bug - On bf548-ezkit, ethernet fails to work after wakeup from "mem"
        Blackfin arch: Random read/write errors are a bad thing
        Blackfin arch: update default kernel config, select KSZ8893M driver for BF518
        Blackfin arch: Fix bug - KGDB single step into the middle of a 4 bytes instruction on bf561 after soft bp is hit
        Blackfin arch: Fix bug - make ksz8893m driver available when bfin_mac is enabled
        Blackfin arch: make sure people do not set the kernel load address too high
        Blackfin arch: fix bug - The SPORT_HYS bit is not set for BF561 0.5
        Blackfin arch: update anomaly sheets to match latest public info
        Blackfin arch: Fix BUG - kernel fails to build in pm.c when allow wakeup fromi standby by GPIO
        Blackfin arch: PM_BFIN_WAKE_GP: update help
        Blackfin arch: fix bug - kgdb fails to continue after setting breakpoint on bf561-ezkit kernel with smp patch
        Blackfin arch: Enable Write Back Cache on all Blackfin Boards
        ...
      14016899
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx · 5dc18f51
      Linus Torvalds authored
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
        dmatest: fix use after free in dmatest_exit
        ipu_idmac: fix spinlock type
        iop-adma, mv_xor: fix mem leak on self-test setup failure
        fsldma: fix off by one in dma_halt
        I/OAT: fail self-test if callback test reaches timeout
        I/OAT: update driver version and copyright dates
        I/OAT: list usage cleanup
        I/OAT: set tcp_dma_copybreak to 256k for I/OAT ver.3
        I/OAT: cancel watchdog before dma remove
        I/OAT: fail initialization on zero channels detection
        I/OAT: do not set DCACTRL_CMPL_WRITE_ENABLE for I/OAT ver.3
        I/OAT: add verification for proper APICID_TAG_MAP setting by BIOS
        dmaengine: update kerneldoc
      5dc18f51
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 · fd6ec5f3
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
        ata: add CFA specific identify data words
        remove stale comment from <linux/hdreg.h>
        AT91: initialize Compact Flash on AT91SAM9263 cpu
        ide: add at91_ide driver
        ide: allow to wrap interrupt handler
        ide-iops: fix odd-length ATAPI PIO transfers
        ide: NULL noise: drivers/ide/ide-*.c
        ide: expiry() returns int, negative expiry() return values won't be noticed
      fd6ec5f3
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · 83d5a325
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        libata: Don't trust current capacity values in identify words 57-58
        libata: make sure port is thawed when skipping resets
        sata_nv: fix module parameter description
        ahci: Add the Device IDs for MCP89 and remove IDs of MCP7B to/from ahci.c
        libata: don't use on-stack sense buffer
        libata: align ap->sector_buf
        libata: fix dma_unmap_sg misuse
        libata: change drive ready wait after hard reset to 5s
      83d5a325