While calling get_user_pages, we grab
current->mm->mmap_sem. However, we do not need to hold on to
it while doing kmap, and since kmap may sleep, it seems like a
genuinely bad idea.
Signed-off-by: Marcelo Vanzin <mvanzin@vmware.com>
err = VMCI_ERROR_NO_MEM;
}
+out:
+ up_write(¤t->mm->mmap_sem);
+
if (err == VMCI_SUCCESS) {
produceQ->qHeader = kmap(attach->producePages[0]);
produceQ->kernelIf->page = &attach->producePages[1];
consumeQ->kernelIf->page = &attach->consumePages[1];
}
-out:
- up_write(¤t->mm->mmap_sem);
-
errorDealloc:
if (err < VMCI_SUCCESS) {
if (attach->producePages != NULL) {