1. 04 Aug, 2007 7 commits
    • NeilBrown's avatar
      md: Fix two raid10 bugs. · 9711bd8c
      NeilBrown authored
      1/ When resyncing a degraded raid10 which has more than 2 copies of each block,
        garbage can get synced on top of good data.
      
      2/ We round the wrong way in part of the device size calculation, which
        can cause confusion.
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      9711bd8c
    • Sergei Shtylyov's avatar
      hpt366: disallow Ultra133 for HPT374 · b34eb784
      Sergei Shtylyov authored
      Eliminate UltraATA/133 support for HPT374 -- the chip isn't capable of this mode
      according to the manual, and doesn't even seem to tolerate 66 MHz DPLL clock...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Geller Sandor <wildy@petra.hos.u-szeged.hu>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b34eb784
    • Alexey Kuznetsov's avatar
      pi-futex: Fix exit races and locking problems · b6c7b073
      Alexey Kuznetsov authored
      1. New entries can be added to tsk->pi_state_list after task completed
         exit_pi_state_list(). The result is memory leakage and deadlocks.
      
      2. handle_mm_fault() is called under spinlock. The result is obvious.
      
      3. results in self-inflicted deadlock inside glibc.
         Sometimes futex_lock_pi returns -ESRCH, when it is not expected
         and glibc enters to for(;;) sleep() to simulate deadlock. This problem
         is quite obvious and I think the patch is right. Though it looks like
         each "if" in futex_lock_pi() got some stupid special case "else if". :-)
      
      4. sometimes futex_lock_pi() returns -EDEADLK,
         when nobody has the lock. The reason is also obvious (see comment
         in the patch), but correct fix is far beyond my comprehension.
         I guess someone already saw this, the chunk:
      
                              if (rt_mutex_trylock(&q.pi_state->pi_mutex))
                                      ret = 0;
      
         is obviously from the same opera. But it does not work, because the
         rtmutex is really taken at this point: wake_futex_pi() of previous
         owner reassigned it to us. My fix works. But it looks very stupid.
         I would think about removal of shift of ownership in wake_futex_pi()
         and making all the work in context of process taking lock.
      
      From: Thomas Gleixner <tglx@linutronix.de>
      
      Fix 1) Avoid the tasklist lock variant of the exit race fix by adding
          an additional state transition to the exit code.
      
          This fixes also the issue, when a task with recursive segfaults
          is not able to release the futexes.
      
      Fix 2) Cleanup the lookup_pi_state() failure path and solve the -ESRCH
          problem finally.
      
      Fix 3) Solve the fixup_pi_state_owner() problem which needs to do the fixup
          in the lock protected section by using the in_atomic userspace access
          functions.
      	
          This removes also the ugly lock drop / unqueue inside of fixup_pi_state()
      
      Fix 4) Fix a stale lock in the error path of futex_wake_pi()
      
      Added some error checks for verification.
      
      The -EDEADLK problem is solved by the rtmutex fixups.
      
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b6c7b073
    • Thomas Gleixner's avatar
      rt-mutex: Fix chain walk early wakeup bug · 8e6a9626
      Thomas Gleixner authored
      Alexey Kuznetsov found some problems in the pi-futex code. 
      
      One of the root causes is:
      
      When a wakeup happens, we do not to stop the chain walk so we
      we follow a non existing locking chain.
      
      Drop out when this happens.
      
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8e6a9626
    • Thomas Gleixner's avatar
      rt-mutex: Fix stale return value · 21e3424e
      Thomas Gleixner authored
      Alexey Kuznetsov found some problems in the pi-futex code. 
      
      The major problem is a stale return value in rt_mutex_slowlock():
      
      When the pi chain walk returns -EDEADLK, but the waiter was woken up 
      during the phases where the locks were dropped, the rtmutex could be
      acquired, but due to the stale return value -EDEADLK returned to the
      caller.
      
      Reset the return value in the woken up path.
      
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      21e3424e
    • Bob Picco's avatar
      sparsemem: fix oops in x86_64 show_mem · b6b364ea
      Bob Picco authored
      We aren't sampling for holes in memory. Thus we encounter a section hole with
      empty section map pointer for SPARSEMEM and OOPs for show_mem. This issue
      has been seen in 2.6.21, current git and current mm. This patch is for
      2.6.21 stable. It was tested against sparsemem.
      
      Previous to commit f0a5a58a memory_present
      was called for node_start_pfn to node_end_pfn. This would cover the hole(s)
      with reserved pages and valid sections. Most SPARSEMEM supported arches
      do a pfn_valid check in show_mem before computing the page structure address.
      
      This issue was brought to my attention on IRC by Arnaldo Carvalho de Melo at
      acme@redhat.com. Thanks to Arnaldo for testing.
      Signed-off-by: default avatarBob Picco <bob.picco@hp.com>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b6b364ea
    • Michael Chan's avatar
      BNX2: Fix netdev watchdog on 5708. · 50099883
      Michael Chan authored
      There's a bug in the driver that only initializes half of the context
      memory on the 5708.  Surprisingly, this works most of the time except
      for some occasional netdev watchdogs when sending a lot of 64-byte
      packets.  This fix is to add the missing code to initialize the 2nd
      half of the context memory.
      
      Update version to 1.5.8.2.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      50099883
  2. 07 Jul, 2007 2 commits
  3. 11 Jun, 2007 31 commits