aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/target/target_core_user.c')
-rw-r--r--drivers/target/target_core_user.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index 0219b5a865be..f29d600357f3 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -1216,7 +1216,7 @@ static void tcmu_set_next_deadline(struct list_head *queue,
1216 del_timer(timer); 1216 del_timer(timer);
1217} 1217}
1218 1218
1219static unsigned int tcmu_handle_completions(struct tcmu_dev *udev) 1219static bool tcmu_handle_completions(struct tcmu_dev *udev)
1220{ 1220{
1221 struct tcmu_mailbox *mb; 1221 struct tcmu_mailbox *mb;
1222 struct tcmu_cmd *cmd; 1222 struct tcmu_cmd *cmd;
@@ -1256,7 +1256,7 @@ static unsigned int tcmu_handle_completions(struct tcmu_dev *udev)
1256 pr_err("cmd_id %u not found, ring is broken\n", 1256 pr_err("cmd_id %u not found, ring is broken\n",
1257 entry->hdr.cmd_id); 1257 entry->hdr.cmd_id);
1258 set_bit(TCMU_DEV_BIT_BROKEN, &udev->flags); 1258 set_bit(TCMU_DEV_BIT_BROKEN, &udev->flags);
1259 break; 1259 return false;
1260 } 1260 }
1261 1261
1262 tcmu_handle_completion(cmd, entry); 1262 tcmu_handle_completion(cmd, entry);
@@ -1499,6 +1499,7 @@ static struct page *tcmu_try_get_block_page(struct tcmu_dev *udev, uint32_t dbi)
1499 mutex_lock(&udev->cmdr_lock); 1499 mutex_lock(&udev->cmdr_lock);
1500 page = tcmu_get_block_page(udev, dbi); 1500 page = tcmu_get_block_page(udev, dbi);
1501 if (likely(page)) { 1501 if (likely(page)) {
1502 get_page(page);
1502 mutex_unlock(&udev->cmdr_lock); 1503 mutex_unlock(&udev->cmdr_lock);
1503 return page; 1504 return page;
1504 } 1505 }
@@ -1537,6 +1538,7 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)
1537 /* For the vmalloc()ed cmd area pages */ 1538 /* For the vmalloc()ed cmd area pages */
1538 addr = (void *)(unsigned long)info->mem[mi].addr + offset; 1539 addr = (void *)(unsigned long)info->mem[mi].addr + offset;
1539 page = vmalloc_to_page(addr); 1540 page = vmalloc_to_page(addr);
1541 get_page(page);
1540 } else { 1542 } else {
1541 uint32_t dbi; 1543 uint32_t dbi;
1542 1544
@@ -1547,7 +1549,6 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)
1547 return VM_FAULT_SIGBUS; 1549 return VM_FAULT_SIGBUS;
1548 } 1550 }
1549 1551
1550 get_page(page);
1551 vmf->page = page; 1552 vmf->page = page;
1552 return 0; 1553 return 0;
1553} 1554}