[driver] properly unlock mdls
when nobody is waiting for the upcall. if it was read/write upcall unlock readwrite mdl. if it was a readdir upcall, unlock readdir mdl and also free it.
This commit is contained in:
parent
8d52181a3e
commit
517db12d34
1 changed files with 11 additions and 0 deletions
|
|
@ -1550,6 +1550,17 @@ NTSTATUS nfs41_downcall(
|
|||
ExAcquireFastMutex(&cur->lock);
|
||||
if (cur->state == NFS41_NOT_WAITING) {
|
||||
print_error("[downcall] Nobody is waiting for this request!!!\n");
|
||||
switch(cur->opcode) {
|
||||
case NFS41_WRITE:
|
||||
case NFS41_READ:
|
||||
MmUnmapLockedPages(cur->u.ReadWrite.buf,
|
||||
cur->u.ReadWrite.MdlAddress);
|
||||
break;
|
||||
case NFS41_DIR_QUERY:
|
||||
MmUnmapLockedPages(cur->u.QueryFile.mdl_buf,
|
||||
cur->u.QueryFile.mdl);
|
||||
IoFreeMdl(cur->u.QueryFile.mdl);
|
||||
}
|
||||
ExReleaseFastMutex(&cur->lock);
|
||||
nfs41_RemoveEntry(downcallLock, downcall, cur);
|
||||
RxFreePool(cur);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue