1. 06 Jun, 2008 9 commits
    • Anton Vorontsov's avatar
      serial: fix driver_name conflicts · 4feead71
      Anton Vorontsov authored
      Some drivers are using too generic "serial" name for driver_name, this
      might cause issues, like this:
      
      Freescale QUICC Engine UART device driver
      proc_dir_entry 'serial' already registered
      Call Trace:
      [cf82de50] [c0007f7c] show_stack+0x4c/0x1ac (unreliable)
      [cf82de90] [c00b03fc] proc_register+0xfc/0x1ac
      [cf82dec0] [c00b05c8] create_proc_entry+0x60/0xac
      [cf82dee0] [c00b23dc] proc_tty_register_driver+0x60/0x98
      [cf82def0] [c016dbd8] tty_register_driver+0x1b4/0x228
      [cf82df20] [c0184d70] uart_register_driver+0x144/0x194
      [cf82df40] [c030a378] ucc_uart_init+0x2c/0x94
      [cf82df50] [c02f21a0] kernel_init+0x98/0x27c
      [cf82dff0] [c000fa74] kernel_thread+0x44/0x60
      
      ^^ The board is using ucc_uart.c and 8250.c, both registered as
         "serial".
      
      This patch fixes two drivers that are using "serial" for driver_name and
      not "ttyS" for dev_name.  Drivers that are using "ttyS" for dev_name, will
      conflict anyway, so we don't bother with these.
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Acked-by: default avatarAlan Cox <alan@redhat.com>
      Acked-By: default avatarTimur Tabi <timur@freescale.com>
      Acked-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4feead71
    • Nick Piggin's avatar
      hugetlb: fix lockdep error · 46478758
      Nick Piggin authored
      =============================================
      [ INFO: possible recursive locking detected ]
      2.6.26-rc4 #30
      ---------------------------------------------
      heap-overflow/2250 is trying to acquire lock:
       (&mm->page_table_lock){--..}, at: [<c0000000000cf2e8>] .copy_hugetlb_page_range+0x108/0x280
      
      but task is already holding lock:
       (&mm->page_table_lock){--..}, at: [<c0000000000cf2dc>] .copy_hugetlb_page_range+0xfc/0x280
      
      other info that might help us debug this:
      3 locks held by heap-overflow/2250:
       #0:  (&mm->mmap_sem){----}, at: [<c000000000050e44>] .dup_mm+0x134/0x410
       #1:  (&mm->mmap_sem/1){--..}, at: [<c000000000050e54>] .dup_mm+0x144/0x410
       #2:  (&mm->page_table_lock){--..}, at: [<c0000000000cf2dc>] .copy_hugetlb_page_range+0xfc/0x280
      
      stack backtrace:
      Call Trace:
      [c00000003b2774e0] [c000000000010ce4] .show_stack+0x74/0x1f0 (unreliable)
      [c00000003b2775a0] [c0000000003f10e0] .dump_stack+0x20/0x34
      [c00000003b277620] [c0000000000889bc] .__lock_acquire+0xaac/0x1080
      [c00000003b277740] [c000000000089000] .lock_acquire+0x70/0xb0
      [c00000003b2777d0] [c0000000003ee15c] ._spin_lock+0x4c/0x80
      [c00000003b277870] [c0000000000cf2e8] .copy_hugetlb_page_range+0x108/0x280
      [c00000003b277950] [c0000000000bcaa8] .copy_page_range+0x558/0x790
      [c00000003b277ac0] [c000000000050fe0] .dup_mm+0x2d0/0x410
      [c00000003b277ba0] [c000000000051d24] .copy_process+0xb94/0x1020
      [c00000003b277ca0] [c000000000052244] .do_fork+0x94/0x310
      [c00000003b277db0] [c000000000011240] .sys_clone+0x60/0x80
      [c00000003b277e30] [c0000000000078c4] .ppc_clone+0x8/0xc
      
      Fix is the same way that mm/memory.c copy_page_range does the
      lockdep annotation.
      Acked-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Acked-by: default avatarAdam Litke <agl@us.ibm.com>
      Acked-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
      Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      46478758
    • Krzysztof Helt's avatar
      modedb: fix incorrect sync and vmode flags for CVT modes · e2d4ecaf
      Krzysztof Helt authored
      The temporary structure for calculated CVT mode is not initialized.  Few
      fields have only bits or-ed or and-ed so they may be left in incorrect
      (random) state.
      
      Testing of the tridentfb seems like a good exercise for the fbdev layer.
      Signed-off-by: default avatarKrzysztof Helt <krzysztof.h1@wp.pl>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e2d4ecaf
    • Adrian Bunk's avatar
      frv: don't offer BINFMT_FLAT · b8c141e8
      Adrian Bunk authored
      Fix the following compile error:
      
        CC      fs/binfmt_flat.o
      In file included from
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:36:
      /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/flat.h:14:22: error: asm/flat.h: No such file or directory
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c: In function 'create_flat_tables':
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:124: error: implicit declaration of function 'flat_stack_align'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:125: error: implicit declaration of function 'flat_argvp_envp_on_stack'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c: In function 'calc_reloc':
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:347: error: implicit declaration of function 'flat_reloc_valid'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c: In function 'load_flat_file':
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:479: error: implicit declaration of function 'flat_old_ram_flag'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:755: error: implicit declaration of function 'flat_set_persistent'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:757: error: implicit declaration of function 'flat_get_relocate_addr'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:765: error: implicit declaration of function 'flat_get_addr_from_rp'
      /home/bunk/linux/kernel-2.6/git/linux-2.6/fs/binfmt_flat.c:781: error: implicit declaration of function 'flat_put_addr_at_rp'
      Reported-by: default avatarAdrian Bunk <bunk@kernel.org>
      Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
      Tested-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b8c141e8
    • Miao Xie's avatar
      cpusets: fix and update Documentation · 6a7d68e8
      Miao Xie authored
      Make the doc consistent with current cpusets implementation.
      Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
      Acked-by: default avatarPaul Jackson <pj@sgi.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6a7d68e8
    • Dan Williams's avatar
      md: do not compute parity unless it is on a failed drive · c337869d
      Dan Williams authored
      If a block is computed (rather than read) then a check/repair operation
      may be lead to believe that the data on disk is correct, when infact it
      isn't.  So only compute blocks for failed devices.
      
      This issue has been around since at least 2.6.12, but has become harder to
      hit in recent kernels since most reads bypass the cache.
      
      echo repair > /sys/block/mdN/md/sync_action will set the parity blocks to the
      correct state.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c337869d
    • Dan Williams's avatar
      md: fix uninitialized use of mddev->recovery_wait · a6d8113a
      Dan Williams authored
      If an array was created with --assume-clean we will oops when trying to
      set ->resync_max.
      
      Fix this by initializing ->recovery_wait in mddev_find.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a6d8113a
    • Dan Williams's avatar
      md: fix prexor vs sync_request race · e0a115e5
      Dan Williams authored
      During the initial array synchronization process there is a window between
      when a prexor operation is scheduled to a specific stripe and when it
      completes for a sync_request to be scheduled to the same stripe.  When
      this happens the prexor completes and the stripe is unconditionally marked
      "insync", effectively canceling the sync_request for the stripe.  Prior to
      2.6.23 this was not a problem because the prexor operation was done under
      sh->lock.  The effect in older kernels being that the prexor would still
      erroneously mark the stripe "insync", but sync_request would be held off
      and re-mark the stripe as "!in_sync".
      
      Change the write completion logic to not mark the stripe "in_sync" if a
      prexor was performed.  The effect of the change is to sometimes not set
      STRIPE_INSYNC.  The worst this can do is cause the resync to stall waiting
      for STRIPE_INSYNC to be set.  If this were happening, then STRIPE_SYNCING
      would be set and handle_issuing_new_read_requests would cause all
      available blocks to eventually be read, at which point prexor would never
      be used on that stripe any more and STRIPE_INSYNC would eventually be set.
      
      echo repair > /sys/block/mdN/md/sync_action will correct arrays that may
      have lost this race.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e0a115e5
    • David Brownell's avatar
      spi: fix refcount-related spidev oops-on-rmmod · b2c8dadd
      David Brownell authored
      This addresses other oopsing paths in "spidev" by changing how it manages
      refcounting.  It decouples the lifecycle of the per-device data from the
      class device (not just the spi device):
      
        - Use class_{create,destroy} not class_{register,unregister}.
        - Use device_{create,destroy} not device_{register,unregister}.
        - Free the per-device data only when TWO conditions are true:
            * Driver is unbound from underlying SPI device, and
            * Device is no longer open (new)
      
      Also, spi_{get,set}_drvdata not dev_{get,set}_drvdata for simpler code.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Sebastian Siewior <bigeasy@tglx.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b2c8dadd
  2. 05 Jun, 2008 31 commits