1. 10 5月, 2006 3 次提交
    • R
      IB/mthca: Fix race in reference counting · a3285aa4
      Roland Dreier 提交于
      Fix races in in destroying various objects.  If a destroy routine
      waits for an object to become free by doing
      
      	wait_event(&obj->wait, !atomic_read(&obj->refcount));
      	/* now clean up and destroy the object */
      
      and another place drops a reference to the object by doing
      
      	if (atomic_dec_and_test(&obj->refcount))
      		wake_up(&obj->wait);
      
      then this is susceptible to a race where the wait_event() and final
      freeing of the object occur between the atomic_dec_and_test() and the
      wake_up().  And this is a use-after-free, since wake_up() will be
      called on part of the already-freed object.
      
      Fix this in mthca by replacing the atomic_t refcounts with plain old
      integers protected by a spinlock.  This makes it possible to do the
      decrement of the reference count and the wake_up() so that it appears
      as a single atomic operation to the code waiting on the wait queue.
      
      While touching this code, also simplify mthca_cq_clean(): the CQ being
      cleaned cannot go away, because it still has a QP attached to it.  So
      there's no reason to be paranoid and look up the CQ by number; it's
      perfectly safe to use the pointer that the callers already have.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      a3285aa4
    • R
      IB/srp: Fix tracking of pending requests during error handling · d945e1df
      Roland Dreier 提交于
      If a SCSI abort completes, or the command completes successfully, then
      the driver must remove the command from its queue of pending
      commands.  Similarly, if a device reset succeeds, then all commands
      queued for the given device must be removed from the queue.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      d945e1df
    • R
      IB: Fix display of 4-bit port counters in sysfs · d8b9f23b
      Ralph Campbell 提交于
      The code to display local_link_integrity_errors and
      excessive_buffer_overrun_errors in
      /sys/class/infiniband/<hca>/ports/<n>/counters/
      uses the wrong shift to extract the 4 bit values.
      Signed-off-by: NRalph Campbell <ralph.campbell@qlogic.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      d8b9f23b
  2. 09 5月, 2006 14 次提交
  3. 07 5月, 2006 2 次提交
  4. 06 5月, 2006 5 次提交
  5. 05 5月, 2006 1 次提交
  6. 04 5月, 2006 5 次提交
  7. 03 5月, 2006 8 次提交
  8. 02 5月, 2006 2 次提交