1. 21 2月, 2009 6 次提交
  2. 20 2月, 2009 16 次提交
    • L
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 620565ef
      Linus Torvalds 提交于
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        Revert "[XFS] remove old vmap cache"
        Revert "[XFS] use scalable vmap API"
      620565ef
    • L
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 · a5e75363
      Linus Torvalds 提交于
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
        [IA64] xen_domu build fix
        [IA64] fixes configs and add default config for ia64 xen domU
        [IA64] Remove redundant cpu_clear() in __cpu_disable path
        [IA64] Revert "prevent ia64 from invoking irq handlers on offline CPUs"
        [IA64] bte_copy of BTE_MAX_XFER trips BUG_ON.
        [IA64] Build fix for __early_pfn_to_nid() undefined link error
      a5e75363
    • T
      [IA64] xen_domu build fix · ec8148de
      Tony Luck 提交于
      arch/ia64/xen/xen_pv_ops.c:156: error: xen_init_ops causes a section type conflict
      arch/ia64/xen/xen_pv_ops.c:340: error: xen_iosapic_ops causes a section type conflict
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      ec8148de
    • I
      [IA64] fixes configs and add default config for ia64 xen domU · 1d5b20f4
      Isaku Yamahata 提交于
      This patch fixes xen related Kconfigs and add default config
      file for ia64 xen domU.
      Signed-off-by: NIsaku Yamahata <yamahata@valinux.co.jp>
      Signed-off-by: NTony Luck <aegl@agluck-desktop.(none)>
      1d5b20f4
    • A
      [IA64] Remove redundant cpu_clear() in __cpu_disable path · c0acdea2
      Alex Chiang 提交于
      The second call to cpu_clear() is redundant, as we've already removed
      the CPU from cpu_online_map before calling migrate_platform_irqs().
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NTony Luck <aegl@agluck-desktop.(none)>
      c0acdea2
    • A
      [IA64] Revert "prevent ia64 from invoking irq handlers on offline CPUs" · 66db2e63
      Alex Chiang 提交于
      This reverts commit e7b14036.
      
      Commit e7b14036 removes the targetted disabled CPU from the
      cpu_online_map after calls to migrate_platform_irqs and fixup_irqs.
      
      Paul McKenney states that the reasoning behind the patch was to
      prevent irq handlers from running on CPUs marked offline because:
      
      	RCU happily ignores CPUs that don't have their bits set in
      	cpu_online_map, so if there are RCU read-side critical sections
      	in the irq handlers being run, RCU will ignore them.  If the
      	other CPUs were running, they might sequence through the RCU
      	state machine, which could result in data structures being
      	yanked out from under those irq handlers, which in turn could
      	result in oopses or worse.
      
      Unfortunately, both ia64 functions above look at cpu_online_map to find
      a new CPU to migrate interrupts onto. This means we can potentially
      migrate an interrupt off ourself back to... ourself. Uh oh.
      
      This causes an oops when we finally try to process pending interrupts on
      the CPU we want to disable. The oops results from calling __do_IRQ with
      a NULL pt_regs:
      
      Unable to handle kernel NULL pointer dereference (address 0000000000000040)
      Call Trace:
       [<a000000100016930>] show_stack+0x50/0xa0
                                      sp=e0000009c922fa00 bsp=e0000009c92214d0
       [<a0000001000171a0>] show_regs+0x820/0x860
                                      sp=e0000009c922fbd0 bsp=e0000009c9221478
       [<a00000010003c700>] die+0x1a0/0x2e0
                                      sp=e0000009c922fbd0 bsp=e0000009c9221438
       [<a0000001006e92f0>] ia64_do_page_fault+0x950/0xa80
                                      sp=e0000009c922fbd0 bsp=e0000009c92213d8
       [<a00000010000c7a0>] ia64_native_leave_kernel+0x0/0x270
                                      sp=e0000009c922fc60 bsp=e0000009c92213d8
       [<a0000001000ecdb0>] profile_tick+0xd0/0x1c0
                                      sp=e0000009c922fe30 bsp=e0000009c9221398
       [<a00000010003bb90>] timer_interrupt+0x170/0x3e0
                                      sp=e0000009c922fe30 bsp=e0000009c9221330
       [<a00000010013a800>] handle_IRQ_event+0x80/0x120
                                      sp=e0000009c922fe30 bsp=e0000009c92212f8
       [<a00000010013aa00>] __do_IRQ+0x160/0x4a0
                                      sp=e0000009c922fe30 bsp=e0000009c9221290
       [<a000000100012290>] ia64_process_pending_intr+0x2b0/0x360
                                      sp=e0000009c922fe30 bsp=e0000009c9221208
       [<a0000001000112d0>] fixup_irqs+0xf0/0x2a0
                                      sp=e0000009c922fe30 bsp=e0000009c92211a8
       [<a00000010005bd80>] __cpu_disable+0x140/0x240
                                      sp=e0000009c922fe30 bsp=e0000009c9221168
       [<a0000001006c5870>] take_cpu_down+0x50/0xa0
                                      sp=e0000009c922fe30 bsp=e0000009c9221148
       [<a000000100122610>] stop_cpu+0xd0/0x200
                                      sp=e0000009c922fe30 bsp=e0000009c92210f0
       [<a0000001000e0440>] kthread+0xc0/0x140
                                      sp=e0000009c922fe30 bsp=e0000009c92210c8
       [<a000000100014ab0>] kernel_thread_helper+0xd0/0x100
                                      sp=e0000009c922fe30 bsp=e0000009c92210a0
       [<a00000010000a4c0>] start_kernel_thread+0x20/0x40
                                      sp=e0000009c922fe30 bsp=e0000009c92210a0
      
      I don't like this revert because it is fragile. ia64 is getting lucky
      because we seem to only ever process timer interrupts in this path, but
      if we ever race with an IPI here, we definitely use RCU and have the
      potential of hitting an oops that Paul describes above.
      
      Patching ia64's timer_interrupt() to check for NULL pt_regs is
      insufficient though, as we still hit the above oops.
      
      As a short term solution, I do think that this revert is the right
      answer. The revert hold up under repeated testing (24+ hour test runs)
      with this setup:
      
      	- 8-way rx6600
      	- randomly toggling CPU online/offline state every 2 seconds
      	- running CPU exercisers, memory hog, disk exercisers, and
      	  network stressors
      	- average system load around ~160
      
      In the long term, we really need to figure out why we set pt_regs = NULL
      in ia64_process_pending_intr(). If it turns out that it is unnecessary
      to do so, then we could safely re-introduce e7b14036 (along with some
      other logic to be smarter about migrating interrupts).
      
      One final note: x86 also removes the disabled CPU from cpu_online_map
      and then re-enables interrupts for 1ms, presumably to handle any pending
      interrupts:
      
      arch/x86/kernel/irq_32.c (and irq_64.c):
      cpu_disable_common:
      	[remove cpu from cpu_online_map]
      
      	fixup_irqs():
      		for_each_irq:
      			[break CPU affinities]
      
      		local_irq_enable();
      		mdelay(1);
      		local_irq_disable();
      
      So they are doing implicitly what ia64 is doing explicitly.
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NTony Luck <aegl@agluck-desktop.(none)>
      66db2e63
    • R
      [IA64] bte_copy of BTE_MAX_XFER trips BUG_ON. · 39d481cb
      Robin Holt 提交于
      BTE_MAX_XFER is wrong.  It is one greater than the number of cache
      lines the BTE is actually able to transfer.  If you request a transfer
      of exactly BTE_MAX_XFER size, you trip a very cryptic BUG_ON() which
      should certainly be made more clear.
      
      This patch fixes that constant and also cleans up the BUG_ON()s in
      arch/ia64/sn/kernel/bte.c to test one condition per line.
      Signed-off-by: NRobin Holt <holt@sgi.com>
      Signed-off-by: NTony Luck <aegl@agluck-desktop.(none)>
      39d481cb
    • T
      [IA64] Build fix for __early_pfn_to_nid() undefined link error · 334f85b6
      Tony Luck 提交于
      ia64 only defines __early_pfn_to_nid() for SPARSEMEM && NUMA configurations,
      so the recent:
      
      	commit: f2dbcfa7
      	mm: clean up for early_pfn_to_nid()
      
      ends up with some link problems for certain configuration files.
      
      Fix arch/ia64/Kconfig to only define HAVE_ARCH_EARLY_PFN_TO_NID in the
      cases where we do provide this function.
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      334f85b6
    • F
      Revert "[XFS] remove old vmap cache" · 27e88bf6
      Felix Blyakher 提交于
      This reverts commit d2859751.
      
      This commit caused regression. We'll try to fix use of new
      vmap API for next release.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      27e88bf6
    • F
      Revert "[XFS] use scalable vmap API" · 7fdf5824
      Felix Blyakher 提交于
      This reverts commit 95f8e302.
      
      This commit caused regression. We'll try to fix use of new
      vmap API for next release.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      7fdf5824
    • L
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · 402a917a
      Linus Torvalds 提交于
      * master.kernel.org:/home/rmk/linux-2.6-arm:
        [ARM] 5405/1: ep93xx: remove unused gesbc9312.h header
        [ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set READ_IMPLIES_EXEC
        [ARM] omap: fix clock reparenting in omap2_clk_set_parent()
        [ARM] 5403/1: pxa25x_ep_fifo_flush() *ep->reg_udccs always set to 0
        [ARM] 5402/1: fix a case of wrap-around in sanity_check_meminfo()
        [ARM] 5401/1: Orion: fix edge triggered GPIO interrupt support
        [ARM] 5400/1: Add support for inverted rdy_busy pin for Atmel nand device controller
        [ARM] 5391/1: AT91: Enable GPIO clocks earlier
        [ARM] 5390/1: AT91: Watchdog fixes
        [ARM] 5398/1: Add Wan ZongShun to MAINTAINERS for W90P910
        [ARM] omap: fix _omap2_clksel_get_src_field()
        [ARM] omap: fix omap2_divisor_to_clksel() error return value
      402a917a
    • L
      Merge branch 'x86-fixes-for-linus' of... · bcf8951f
      Linus Torvalds 提交于
      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, mce: fix ifdef for 64bit thermal apic vector clear on shutdown
        x86, mce: use force_sig_info to kill process in machine check
        x86, mce: reinitialize per cpu features on resume
        x86, rcu: fix strange load average and ksoftirqd behavior
      bcf8951f
    • L
      Merge branch 'tracing-fixes-for-linus' of... · f54b2fe4
      Linus Torvalds 提交于
      Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        tracing: limit the number of loops the ring buffer self test can make
        tracing: have function trace select kallsyms
        tracing: disable tracing while testing ring buffer
        tracing/function-graph-tracer: trace the idle tasks
      f54b2fe4
    • L
      Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 · 83ff1af9
      Linus Torvalds 提交于
      * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
        [S390] fix "mem=" handling in case of standby memory
        [S390] Fix timeval regression on s390
        [S390] sclp: handle empty event buffers
      83ff1af9
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 · a1342d3b
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
        sound: virtuoso: revert "do not overwrite EEPROM on Xonar D2/D2X"
        ALSA: jack - Use card->shortname for input name
        ALSA: usb-audio - Workaround for misdetected sample rate with CM6207
        ALSA: usb-audio - Fix non-continuous rate detection
        sound: usb-audio: fix uninitialized variable with M-Audio MIDI interfaces
        Revert "Sound: hda - Restore PCI configuration space with interrupts off"
      a1342d3b
    • H
      [ARM] 5405/1: ep93xx: remove unused gesbc9312.h header · 9dd446f6
      Hartley Sweeten 提交于
      Remove the gesbc9312.h header since it is unused.
      Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      9dd446f6
  3. 19 2月, 2009 18 次提交
    • M
      [ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set READ_IMPLIES_EXEC · 9da616fb
      Makito SHIOKAWA 提交于
      READ_IMPLIES_EXEC must be set when:
      o binary _is_ an executable stack (i.e. not EXSTACK_DISABLE_X)
      o processor architecture is _under_ ARMv6 (XN bit is supported from ARMv6)
      Signed-off-by: NMakito SHIOKAWA <lkhmkt@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      9da616fb
    • H
      [S390] fix "mem=" handling in case of standby memory · 23d75d9c
      Heiko Carstens 提交于
      Standby memory detected with the sclp interface gets always registered
      with add_memory calls without considering the limitationt that the
      "mem=" kernel paramater implies.
      So fix this and only register standby memory that is below the specified
      limit.
      This fixes zfcpdump since it uses "mem=32M". In case there is appr.
      2GB standby memory present all of usable memory would be used for the
      struct pages needed for standby memory.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      23d75d9c
    • C
      [S390] Fix timeval regression on s390 · d5cd0343
      Christian Borntraeger 提交于
      commit aa5e97ce
      [PATCH] improve precision of process accounting.
      
      Introduced a timing regression:
      -bash-3.2# time ls
      real    0m0.006s
      user    0m1.754s
      sys     0m1.094s
      
      The problem was introduced by an error in cputime_to_timeval.
      Cputime is now 1/4096 microsecond, therefore, we have to divide
      the remainder with 4096 to get the microseconds.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      d5cd0343
    • P
      [S390] sclp: handle empty event buffers · e2e5a0f2
      Peter Oberparleiter 提交于
      Handle a malformed hardware response which some versions of the
      Support Element (SE) may present during SE restart and which otherwise
      would result in an endless loop in function sclp_dispatch_evbufs.
      Signed-off-by: NPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      e2e5a0f2
    • R
      [ARM] omap: fix clock reparenting in omap2_clk_set_parent() · 41f3103f
      Russell King 提交于
      When changing the parent of a clock, it is necessary to keep the
      clock use counts balanced otherwise things the parent state will
      get corrupted.  Since we already disable and re-enable the clock,
      we might as well use the recursive versions instead.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      41f3103f
    • T
      Merge branch 'fix/usb-audio' into for-linus · e432472d
      Takashi Iwai 提交于
      e432472d
    • T
      Merge branch 'fix/misc' into for-linus · e6845d91
      Takashi Iwai 提交于
      e6845d91
    • T
      Merge branch 'fix/hda' into for-linus · 379752fd
      Takashi Iwai 提交于
      379752fd
    • R
      [ARM] 5403/1: pxa25x_ep_fifo_flush() *ep->reg_udccs always set to 0 · 22eb36f4
      Roel Kluin 提交于
      *ep->reg_udccs is always set to 0.
      Signed-off-by: NRoel Kluin <roel.kluin@gmail.com>
      Acked-by: NEric Miao <eric.miao@marvell.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      22eb36f4
    • N
      [ARM] 5402/1: fix a case of wrap-around in sanity_check_meminfo() · 3fd9825c
      Nicolas Pitre 提交于
      In the non highmem case, if two memory banks of 1GB each are provided,
      the second bank would evade suppression since its virtual base would
      be 0.  Fix this by disallowing any memory bank which virtual base
      address is found to be lower than PAGE_OFFSET.
      Reported-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NNicolas Pitre <nico@marvell.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3fd9825c
    • I
      Merge branch 'tip/tracing/urgent' of... · ed4a2f37
      Ingo Molnar 提交于
      Merge branch 'tip/tracing/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent
      ed4a2f37
    • C
      sound: virtuoso: revert "do not overwrite EEPROM on Xonar D2/D2X" · 6ce6c473
      Clemens Ladisch 提交于
      This reverts commit 7e86c0e6 ("do not
      overwrite EEPROM on Xonar D2/D2X") because it did not actually help with
      the problem.
      
      More user reports show that the overwriting of the EEPROM is not
      triggered by using this driver but by installing Linux, and that the
      installation of any other operating system (even one without any CMI8788
      driver) has the same effect.  In other words, the presence of this
      driver does not have any effect on the occurrence of the error.  (So
      far, the available evidence seems to point to a BIOS bug.)
      
      Furthermore, it turns out that the EEPROM chip is protected against
      stray write commands by the command format and by requiring a separate
      write-enable command, so the error scenario in the previous commit (that
      SPI writes can be misinterpreted as an EEPROM write command) is not even
      theoretically possible.
      
      The mixer control that was removed as a consequence of the previous
      commit can only be partially emulated in userspace, which also means it
      cannot be seen be the in-kernel OSS API emulation, so it is better to
      revert that change.
      Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
      Cc: <stable@kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6ce6c473
    • S
      tracing: limit the number of loops the ring buffer self test can make · 4b3e3d22
      Steven Rostedt 提交于
      Impact: prevent deadlock if ring buffer gets corrupted
      
      This patch adds a paranoid check to make sure the ring buffer consumer
      does not go into an infinite loop. Since the ring buffer has been set
      to read only, the consumer should not loop for more than the ring buffer
      size. A check is added to make sure the consumer does not loop more than
      the ring buffer size.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      4b3e3d22
    • S
      tracing: have function trace select kallsyms · 4d7a077c
      Steven Rostedt 提交于
      Impact: fix output of function tracer to be useful
      
      The function tracer is pretty useless if KALLSYMS is not configured.
      Unless you are good at reading hex values, the function tracer should
      select the KALLSYMS configuration.
      
      Also, the dynamic function tracer will fail its self test if KALLSYMS
      is not selected.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      4d7a077c
    • S
      tracing: disable tracing while testing ring buffer · 0c5119c1
      Steven Rostedt 提交于
      Impact: fix to prevent hard lockup on self tests
      
      If one of the tracers are broken and is constantly filling the ring
      buffer while the test of the ring buffer is running, it will hang
      the box. The reason is that the test is a consumer that will not
      stop till the ring buffer is empty. But if the tracer is broken and
      is constantly producing input to the buffer, this test will never
      end. The result is a lockup of the box.
      
      This happened when KALLSYMS was not defined and the dynamic ftrace
      test constantly filled the ring buffer, because the filter failed
      and all functions were being traced. Something was being called
      that constantly filled the buffer.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      0c5119c1
    • L
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · ba95fd47
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
        block: fix deadlock in blk_abort_queue() for drivers that readd to timeout list
        block: fix booting from partitioned md array
        block: revert part of 18ce3751
        cciss: PCI power management reset for kexec
        paride/pg.c: xs(): &&/|| confusion
        fs/bio: bio_alloc_bioset: pass right object ptr to mempool_free
        block: fix bad definition of BIO_RW_SYNC
        bsg: Fix sense buffer bug in SG_IO
      ba95fd47
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc · 59af0a0b
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
        omap_hsmmc: Change while(); loops with finite version
        omap_hsmmc: recover from transfer failures
        omap_hsmmc: only MMC1 allows HCTL.SDVS != 1.8V
        omap_hsmmc: card detect irq bugfix
        sdhci: fix led naming
        mmc_test: fix basic read test
        s3cmci: Fix hangup in do_pio_write()
        Revert "sdhci: force high speed capability on some controllers"
        MMC: fix bug - SDHC card capacity not correct
      59af0a0b
    • I
      inotify: fix GFP_KERNEL related deadlock · f04b30de
      Ingo Molnar 提交于
      Enhanced lockdep coverage of __GFP_NOFS turned up this new lockdep
      assert:
      
      [ 1093.677775]
      [ 1093.677781] =================================
      [ 1093.680031] [ INFO: inconsistent lock state ]
      [ 1093.680031] 2.6.29-rc5-tip-01504-gb49eca1-dirty #1
      [ 1093.680031] ---------------------------------
      [ 1093.680031] inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
      [ 1093.680031] kswapd0/308 [HC0[0]:SC0[0]:HE1:SE1] takes:
      [ 1093.680031]  (&inode->inotify_mutex){+.+.?.}, at: [<c0205942>] inotify_inode_is_dead+0x20/0x80
      [ 1093.680031] {RECLAIM_FS-ON-W} state was registered at:
      [ 1093.680031]   [<c01696b9>] mark_held_locks+0x43/0x5b
      [ 1093.680031]   [<c016baa4>] lockdep_trace_alloc+0x6c/0x6e
      [ 1093.680031]   [<c01cf8b0>] kmem_cache_alloc+0x20/0x150
      [ 1093.680031]   [<c040d0ec>] idr_pre_get+0x27/0x6c
      [ 1093.680031]   [<c02056e3>] inotify_handle_get_wd+0x25/0xad
      [ 1093.680031]   [<c0205f43>] inotify_add_watch+0x7a/0x129
      [ 1093.680031]   [<c020679e>] sys_inotify_add_watch+0x20f/0x250
      [ 1093.680031]   [<c010389e>] sysenter_do_call+0x12/0x35
      [ 1093.680031]   [<ffffffff>] 0xffffffff
      [ 1093.680031] irq event stamp: 60417
      [ 1093.680031] hardirqs last  enabled at (60417): [<c018d5f5>] call_rcu+0x53/0x59
      [ 1093.680031] hardirqs last disabled at (60416): [<c018d5b9>] call_rcu+0x17/0x59
      [ 1093.680031] softirqs last  enabled at (59656): [<c0146229>] __do_softirq+0x157/0x16b
      [ 1093.680031] softirqs last disabled at (59651): [<c0106293>] do_softirq+0x74/0x15d
      [ 1093.680031]
      [ 1093.680031] other info that might help us debug this:
      [ 1093.680031] 2 locks held by kswapd0/308:
      [ 1093.680031]  #0:  (shrinker_rwsem){++++..}, at: [<c01b0502>] shrink_slab+0x36/0x189
      [ 1093.680031]  #1:  (&type->s_umount_key#4){+++++.}, at: [<c01e6d77>] shrink_dcache_memory+0x110/0x1fb
      [ 1093.680031]
      [ 1093.680031] stack backtrace:
      [ 1093.680031] Pid: 308, comm: kswapd0 Not tainted 2.6.29-rc5-tip-01504-gb49eca1-dirty #1
      [ 1093.680031] Call Trace:
      [ 1093.680031]  [<c016947a>] valid_state+0x12a/0x13d
      [ 1093.680031]  [<c016954e>] mark_lock+0xc1/0x1e9
      [ 1093.680031]  [<c016a5b4>] ? check_usage_forwards+0x0/0x3f
      [ 1093.680031]  [<c016ab74>] __lock_acquire+0x2c6/0xac8
      [ 1093.680031]  [<c01688d9>] ? register_lock_class+0x17/0x228
      [ 1093.680031]  [<c016b3d3>] lock_acquire+0x5d/0x7a
      [ 1093.680031]  [<c0205942>] ? inotify_inode_is_dead+0x20/0x80
      [ 1093.680031]  [<c08824c4>] __mutex_lock_common+0x3a/0x4cb
      [ 1093.680031]  [<c0205942>] ? inotify_inode_is_dead+0x20/0x80
      [ 1093.680031]  [<c08829ed>] mutex_lock_nested+0x2e/0x36
      [ 1093.680031]  [<c0205942>] ? inotify_inode_is_dead+0x20/0x80
      [ 1093.680031]  [<c0205942>] inotify_inode_is_dead+0x20/0x80
      [ 1093.680031]  [<c01e6672>] dentry_iput+0x90/0xc2
      [ 1093.680031]  [<c01e67a3>] d_kill+0x21/0x45
      [ 1093.680031]  [<c01e6a46>] __shrink_dcache_sb+0x27f/0x355
      [ 1093.680031]  [<c01e6dc5>] shrink_dcache_memory+0x15e/0x1fb
      [ 1093.680031]  [<c01b05ed>] shrink_slab+0x121/0x189
      [ 1093.680031]  [<c01b0d12>] kswapd+0x39f/0x561
      [ 1093.680031]  [<c01ae499>] ? isolate_pages_global+0x0/0x233
      [ 1093.680031]  [<c0157eae>] ? autoremove_wake_function+0x0/0x43
      [ 1093.680031]  [<c01b0973>] ? kswapd+0x0/0x561
      [ 1093.680031]  [<c0157daf>] kthread+0x41/0x82
      [ 1093.680031]  [<c0157d6e>] ? kthread+0x0/0x82
      [ 1093.680031]  [<c01043ab>] kernel_thread_helper+0x7/0x10
      
      inotify_handle_get_wd() does idr_pre_get() which does a
      kmem_cache_alloc() without __GFP_FS - and is hence deadlockable under
      extreme MM pressure.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: MinChan Kim <minchan.kim@gmail.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f04b30de