aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/target/target_core_rd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/target/target_core_rd.c b/drivers/target/target_core_rd.c
index 0457de362e68..b0fff52c990e 100644
--- a/drivers/target/target_core_rd.c
+++ b/drivers/target/target_core_rd.c
@@ -256,10 +256,12 @@ static void rd_free_device(struct se_device *dev)
256 256
257static struct rd_dev_sg_table *rd_get_sg_table(struct rd_dev *rd_dev, u32 page) 257static struct rd_dev_sg_table *rd_get_sg_table(struct rd_dev *rd_dev, u32 page)
258{ 258{
259 u32 i;
260 struct rd_dev_sg_table *sg_table; 259 struct rd_dev_sg_table *sg_table;
260 u32 i, sg_per_table = (RD_MAX_ALLOCATION_SIZE /
261 sizeof(struct scatterlist));
261 262
262 for (i = 0; i < rd_dev->sg_table_count; i++) { 263 i = page / sg_per_table;
264 if (i < rd_dev->sg_table_count) {
263 sg_table = &rd_dev->sg_table_array[i]; 265 sg_table = &rd_dev->sg_table_array[i];
264 if ((sg_table->page_start_offset <= page) && 266 if ((sg_table->page_start_offset <= page) &&
265 (sg_table->page_end_offset >= page)) 267 (sg_table->page_end_offset >= page))