Index: svn_r64030/drivers/usb/usbstor/pdo.c =================================================================== --- svn_r64030/drivers/usb/usbstor/pdo.c (revision 73558) +++ svn_r64030/drivers/usb/usbstor/pdo.c (working copy) @@ -1037,7 +1037,7 @@ // allocate data transfer block // Request->DataBuffer = ExAllocatePool(NonPagedPool, DataTransferLength); - if (!Request) + if (!Request->DataBuffer) { // // no memory @@ -1057,6 +1057,7 @@ // no memory // IoFreeIrp(Irp); + ExFreePool(Request->DataBuffer); ExFreePool(Request); return STATUS_INSUFFICIENT_RESOURCES; } @@ -1165,7 +1166,11 @@ // *OutData = Request->DataBuffer; } + else //callers don't currently release if bad status returned + //could also set *OutData = 0 ; to accentuate fact its not there... + ExFreePool(Request->DataBuffer); + // // free resources //