Skip to content

Commit

Permalink
Target/sbc: Don't use sg as iterator in sbc_verify_read
Browse files Browse the repository at this point in the history
Because then this sg is passed to sbc_copy_prot which will
hit a protection fault in cases we have more than a single sg.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
  • Loading branch information
Sagi Grimberg authored and Nicholas Bellinger committed Feb 24, 2014
1 parent 94387aa commit fc272ec
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/target/target_core_sbc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1162,22 +1162,22 @@ sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors,
{
struct se_device *dev = cmd->se_dev;
struct se_dif_v1_tuple *sdt;
struct scatterlist *dsg;
struct scatterlist *dsg, *psg = sg;
sector_t sector = start;
void *daddr, *paddr;
int i, j, offset = sg_off;
sense_reason_t rc;

for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) {
daddr = kmap_atomic(sg_page(dsg)) + dsg->offset;
paddr = kmap_atomic(sg_page(sg)) + sg->offset;
paddr = kmap_atomic(sg_page(psg)) + sg->offset;

for (j = 0; j < dsg->length; j += dev->dev_attrib.block_size) {

if (offset >= sg->length) {
if (offset >= psg->length) {
kunmap_atomic(paddr);
sg = sg_next(sg);
paddr = kmap_atomic(sg_page(sg)) + sg->offset;
psg = sg_next(psg);
paddr = kmap_atomic(sg_page(psg)) + psg->offset;
offset = 0;
}

Expand Down

0 comments on commit fc272ec

Please sign in to comment.