diff options
author | Philip J Kelleher <pjk1939@linux.vnet.ibm.com> | 2013-09-04 13:59:02 -0500 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-11-08 09:10:28 -0700 |
commit | e5feab229f199dadee91073fbef5b507046086fd (patch) | |
tree | a5a5f75cd2ad53ecda8a9e2b3e95046e119be148 /drivers/block/rsxx/core.c | |
parent | ef7e7c82e02b602f29c2b87f42dcd6143a6777da (diff) | |
download | talos-obmc-linux-e5feab229f199dadee91073fbef5b507046086fd.tar.gz talos-obmc-linux-e5feab229f199dadee91073fbef5b507046086fd.zip |
rsxx: Handling failed pci_map_page on PowerPC and double free.
The rsxx driver was not checking the correct value during a
pci_map_page failure. Fixing this also uncovered a
double free if the bio was returned before it was
broken up into indiviadual 4k dmas, that is also
fixed here.
Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block/rsxx/core.c')
-rw-r--r-- | drivers/block/rsxx/core.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/block/rsxx/core.c b/drivers/block/rsxx/core.c index 6e85e21445eb..e740a650d546 100644 --- a/drivers/block/rsxx/core.c +++ b/drivers/block/rsxx/core.c @@ -654,7 +654,8 @@ static void rsxx_eeh_failure(struct pci_dev *dev) for (i = 0; i < card->n_targets; i++) { spin_lock_bh(&card->ctrl[i].queue_lock); cnt = rsxx_cleanup_dma_queue(&card->ctrl[i], - &card->ctrl[i].queue); + &card->ctrl[i].queue, + COMPLETE_DMA); spin_unlock_bh(&card->ctrl[i].queue_lock); cnt += rsxx_dma_cancel(&card->ctrl[i]); |