diff options
Diffstat (limited to 'drivers/target/target_core_user.c')
-rw-r--r-- | drivers/target/target_core_user.c | 7 |
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 | ||
1219 | static unsigned int tcmu_handle_completions(struct tcmu_dev *udev) | 1219 | static 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 | } |