linux/drivers/firewire
Stefan Richter 6c74340bce firewire: sbp2: fix memory leak in sbp2_cancel_orbs or at send error
When an ORB was canceled (Command ORB i.e. SCSI request timed out, or
Management ORB timed out), or there was a send error in the initial
transaction, we missed to drop one of the ORB's references and thus
leaked memory.

Background:
In total, we hold 3 references to each Operation Request Block:
  - 1 during sbp2_scsi_queuecommand() or sbp2_send_management_orb()
    respectively,
  - 1 for the duration of the write transaction to the ORB_Pointer or
    Management_Agent register of the target,
  - 1 for as long as the ORB stays within the lu->orb_list, until
    the ORB is unlinked from the list and the orb->callback was
    executed.

The latter one of these 3 references is finished
  - normally by sbp2_status_write() when the target wrote status
    for a pending ORB,
  - or by sbp2_cancel_orbs() in case of an ORB time-out,
  - or by complete_transaction() in case of a send error.
Of them, the latter two lacked the kref_put.

Add the missing kref_put()s.  Add comments to the gets and puts of
references for transaction callbacks and ORB callbacks so that it is
easier to see what is supposed to happen.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
2010-08-19 20:28:25 +02:00
..
core-card.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
core-cdev.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
core-device.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
core-iso.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
core-topology.c firewire: core: fix fw_send_request kerneldoc comment 2010-07-13 09:47:47 +02:00
core-transaction.c firewire: core: fix upper bound of possible CSR allocations 2010-07-23 13:36:28 +02:00
core.h firewire: add isochronous multichannel reception 2010-07-29 23:09:18 +02:00
Kconfig tools/firewire: add userspace front-end of nosy 2010-07-27 11:04:11 +02:00
Makefile firewire: new driver: nosy - IEEE 1394 traffic sniffer 2010-07-27 11:04:10 +02:00
net.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
nosy-user.h firewire: nosy: endianess fixes and annotations 2010-07-27 11:04:11 +02:00
nosy.c firewire: nosy: use generic printk macros 2010-07-27 11:04:11 +02:00
nosy.h firewire: nosy: misc cleanups 2010-07-27 11:04:10 +02:00
ohci.c Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
ohci.h firewire: add CSR cmstr support 2010-06-10 08:36:37 +02:00
sbp2.c firewire: sbp2: fix memory leak in sbp2_cancel_orbs or at send error 2010-08-19 20:28:25 +02:00