IB/srp: Fix unmapping of fake scatterlist
authorRoland Dreier <rolandd@cisco.com>
Wed, 29 Mar 2006 17:36:45 +0000 (09:36 -0800)
committerRoland Dreier <rolandd@cisco.com>
Wed, 29 Mar 2006 17:36:45 +0000 (09:36 -0800)
The recently merged patch to create a fake scatterlist for non-SG SCSI
commands had a bug: the driver ended up doing dma_unmap_sg() on a
scatterlist scmnd->request_buffer rather than the fake scatter list it
created.  Fix this so that the driver unmaps the same thing it maps.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/ulp/srp/ib_srp.c

index 61924cc30e55c55369cb4eadf191fc2f0ad0daaf..fd8a95a9c5d3e6f26e9927df9f8a53ea8ce06ab6 100644 (file)
@@ -607,10 +607,10 @@ static void srp_unmap_data(struct scsi_cmnd *scmnd,
         */
        if (likely(scmnd->use_sg)) {
                nents = scmnd->use_sg;
-               scat  = (struct scatterlist *) scmnd->request_buffer;
+               scat  = scmnd->request_buffer;
        } else {
                nents = 1;
-               scat  = (struct scatterlist *) scmnd->request_buffer;
+               scat  = &req->fake_sg;
        }
 
        dma_unmap_sg(target->srp_host->dev->dma_device, scat, nents,