1. 31 1月, 2008 7 次提交
  2. 12 1月, 2008 1 次提交
  3. 07 11月, 2007 1 次提交
    • S
      firewire: fw-sbp2: fix refcounting · 7c45d191
      Stefan Richter 提交于
      Since patch "fw-sbp2: use an own workqueue (fix system responsiveness)"
      increased parallelism between fw-sbp2 and fw-core, it was possible that
      fw-sbp2 didn't release the SCSI device when the FireWire device was
      disconnected.
      
      This happened if sbp2_update() ran during sbp2_login(), because a bus
      reset occurred during sbp2_login().  The sbp2_login() work would [try
      to] reschedule itself because it failed due to the bus reset, and it
      would _not_ drop its reference on the target.  However, sbp2_update()
      would schedule sbp2_login() too before sbp2_login() rescheduled itself
      and hence sbp2_update() would take an additional reference.  And then
      we would have one reference too many.
      
      The fix is to _always_ drop the reference when leaving the sbp2_login()
      work.  If the sbp2_login() work reschedules itself, it takes a
      reference, but only if it wasn't already rescheduled by sbp2_update().
      
      Ditto in the sbp2_reconnect() work.
      
      The resulting code is actually simpler than before:  We _always_ take
      a reference when successfully scheduling work.  And we _always_ drop
      a reference when leaving a workqueue job.  No exceptions.
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      7c45d191
  4. 17 10月, 2007 4 次提交
  5. 26 8月, 2007 1 次提交
  6. 03 8月, 2007 1 次提交
  7. 20 7月, 2007 1 次提交
  8. 19 7月, 2007 1 次提交
  9. 10 7月, 2007 14 次提交
  10. 01 6月, 2007 1 次提交
  11. 11 5月, 2007 8 次提交