diff --git a/drivers/staging/hv/Connection.c b/drivers/staging/hv/Connection.c index 1e4111412ab6..e590eb4b6e76 100644 --- a/drivers/staging/hv/Connection.c +++ b/drivers/staging/hv/Connection.c @@ -98,6 +98,11 @@ int VmbusConnect(void) } msgInfo->WaitEvent = osd_WaitEventCreate(); + if (!msgInfo->WaitEvent) { + ret = -ENOMEM; + goto Cleanup; + } + msg = (struct vmbus_channel_initiate_contact *)msgInfo->Msg; msg->Header.MessageType = ChannelMessageInitiateContact; diff --git a/drivers/staging/hv/NetVsc.c b/drivers/staging/hv/NetVsc.c index 27516d40b6ed..d3154e711776 100644 --- a/drivers/staging/hv/NetVsc.c +++ b/drivers/staging/hv/NetVsc.c @@ -749,6 +749,10 @@ static int NetVscOnDeviceAdd(struct hv_device *Device, void *AdditionalInfo) &netDevice->ReceivePacketList); } netDevice->ChannelInitEvent = osd_WaitEventCreate(); + if (!netDevice->ChannelInitEvent) { + ret = -ENOMEM; + goto Cleanup; + } /* Open the channel */ ret = Device->Driver->VmbusChannelInterface.Open(Device, diff --git a/drivers/staging/hv/StorVsc.c b/drivers/staging/hv/StorVsc.c index 7372317fe836..4d0fbce229e2 100644 --- a/drivers/staging/hv/StorVsc.c +++ b/drivers/staging/hv/StorVsc.c @@ -199,6 +199,10 @@ static int StorVscChannelInit(struct hv_device *Device) */ memset(request, 0, sizeof(struct storvsc_request_extension)); request->WaitEvent = osd_WaitEventCreate(); + if (!request->WaitEvent) { + ret = -ENOMEM; + goto nomem; + } vstorPacket->Operation = VStorOperationBeginInitialization; vstorPacket->Flags = REQUEST_COMPLETION_FLAG; @@ -338,7 +342,7 @@ static int StorVscChannelInit(struct hv_device *Device) Cleanup: kfree(request->WaitEvent); request->WaitEvent = NULL; - +nomem: PutStorDevice(Device); DPRINT_EXIT(STORVSC); @@ -649,6 +653,10 @@ int StorVscOnHostReset(struct hv_device *Device) vstorPacket = &request->VStorPacket; request->WaitEvent = osd_WaitEventCreate(); + if (!request->WaitEvent) { + ret = -ENOMEM; + goto Cleanup; + } vstorPacket->Operation = VStorOperationResetBus; vstorPacket->Flags = REQUEST_COMPLETION_FLAG;