OSDN Git Service

scsi: fix refcounting for reads
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 24 Apr 2012 06:41:04 +0000 (08:41 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 4 May 2012 08:39:52 +0000 (10:39 +0200)
commit31e8fd86f24b4eec8a1708d712bf0532460bb0a5
tree6a8e344234861da4aea779d6c95ee45e04a6df54
parent12a08998fe4f749af3622385521829a5143e6ff1
scsi: fix refcounting for reads

Recently introduced FUA support also gave us a use-after-free
of the BlockAcctCookie within a SCSIDiskReq, due to unbalanced
reference counting.

The patch fixes this by making scsi_do_read look like a combination
of scsi_*_complete + scsi_*_data.  It does both a ref (like
scsi_read_data) and an unref (like scsi_flush_complete).

Reported-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi-disk.c