Staging: hv: remove ASSERT() in Channel.c
authorBill Pemberton <wfp5p@virginia.edu>
Wed, 5 May 2010 19:27:35 +0000 (15:27 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 11 May 2010 18:36:13 +0000 (11:36 -0700)
check memory allocation in VmbusChannelCreateGpadlHeader() and
return -ENOMEM if it fails

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/Channel.c

index 79c013b481700be34fce94ff8f32581e743d40af..2d8c086228cc88071aa5c581a7cdac4f4b96e0e1 100644 (file)
@@ -382,6 +382,8 @@ static int VmbusChannelCreateGpadlHeader(void *Kbuffer, u32 Size,
                          sizeof(struct vmbus_channel_gpadl_header) +
                          sizeof(struct gpa_range) + pfnCount * sizeof(u64);
                msgHeader =  kzalloc(msgSize, GFP_KERNEL);
+               if (!msgHeader)
+                       goto nomem;
 
                INIT_LIST_HEAD(&msgHeader->SubMsgList);
                msgHeader->MessageSize = msgSize;
@@ -416,7 +418,9 @@ static int VmbusChannelCreateGpadlHeader(void *Kbuffer, u32 Size,
                                  sizeof(struct vmbus_channel_gpadl_body) +
                                  pfnCurr * sizeof(u64);
                        msgBody = kzalloc(msgSize, GFP_KERNEL);
-                       ASSERT(msgBody);
+                       /* FIXME: we probably need to more if this fails */
+                       if (!msgBody)
+                               goto nomem;
                        msgBody->MessageSize = msgSize;
                        (*MessageCount)++;
                        gpadlBody =
@@ -459,6 +463,10 @@ static int VmbusChannelCreateGpadlHeader(void *Kbuffer, u32 Size,
        }
 
        return 0;
+nomem:
+       kfree(msgHeader);
+       kfree(msgBody);
+       return -ENOMEM;
 }
 
 /*