On Sun, 2014-02-23 at 14:20 +0200, Sagi Grimberg wrote: > 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@xxxxxxxxxxxx> > --- Applied + queued for the upcoming -rc5 PULL request. Thanks Sagi! --nab > drivers/target/target_core_sbc.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c > index edda77f..ae58fdf 100644 > --- a/drivers/target/target_core_sbc.c > +++ b/drivers/target/target_core_sbc.c > @@ -1221,7 +1221,7 @@ 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; > @@ -1229,14 +1229,14 @@ sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors, > > 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; > } > -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html