Staging: hv: test return value of osd_WaitEventCreate()
authorBill Pemberton <wfp5p@virginia.edu>
Wed, 5 May 2010 19:27:33 +0000 (15:27 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 11 May 2010 18:36:13 +0000 (11:36 -0700)
The return value of osd_WaitEventCreate() was not examined in some
places.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Cc: Hank Janssen <hjanssen@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/Connection.c
drivers/staging/hv/NetVsc.c
drivers/staging/hv/StorVsc.c

index 1e4111412ab6e639d971c518320ce97b83b9a351..e590eb4b6e762192e4881b5e7ff01c0014339e38 100644 (file)
@@ -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;
index 27516d40b6edaf9b8c5c082afb23da5669b68963..d3154e711776a6087027e14e77b0b631846c44b4 100644 (file)
@@ -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,
index 7372317fe8364433cab67f5ad7cc2a84a5f0d5b0..4d0fbce229e25cacc8cb7503f07d5792e4c8c34e 100644 (file)
@@ -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;