Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 197292
b: refs/heads/master
c: c3bf2e2
h: refs/heads/master
v: v3
  • Loading branch information
Bill Pemberton authored and Greg Kroah-Hartman committed May 11, 2010
1 parent 6076794 commit c776fd3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 80d11b2ae26543656f7226b44ed9d6a184766e85
refs/heads/master: c3bf2e26b30f4ea54f3825e8ebda7cb10ec204de
45 changes: 36 additions & 9 deletions trunk/drivers/staging/hv/Channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ int VmbusChannelOpen(struct vmbus_channel *NewChannel, u32 SendRingBufferSize,
struct vmbus_channel_msginfo *openInfo;
void *in, *out;
unsigned long flags;
int ret;
int ret, err = 0;

DPRINT_ENTER(VMBUS);

Expand Down Expand Up @@ -218,6 +218,7 @@ int VmbusChannelOpen(struct vmbus_channel *NewChannel, u32 SendRingBufferSize,
SendRingBufferSize +
RecvRingBufferSize,
&NewChannel->RingBufferGpadlHandle);
/* FIXME: the value of ret is not checked */

DPRINT_DBG(VMBUS, "channel %p <relid %d gpadl 0x%x send ring %p "
"size %d recv ring %p size %d, downstreamoffset %d>",
Expand All @@ -233,9 +234,16 @@ int VmbusChannelOpen(struct vmbus_channel *NewChannel, u32 SendRingBufferSize,
openInfo = kmalloc(sizeof(*openInfo) +
sizeof(struct vmbus_channel_open_channel),
GFP_KERNEL);
ASSERT(openInfo != NULL);
if (!openInfo) {
err = -ENOMEM;
goto errorout;
}

openInfo->WaitEvent = osd_WaitEventCreate();
if (!openInfo->WaitEvent) {
err = -ENOMEM;
goto errorout;
}

openMsg = (struct vmbus_channel_open_channel *)openInfo->Msg;
openMsg->Header.MessageType = ChannelMessageOpenChannel;
Expand Down Expand Up @@ -285,6 +293,12 @@ int VmbusChannelOpen(struct vmbus_channel *NewChannel, u32 SendRingBufferSize,
DPRINT_EXIT(VMBUS);

return 0;

errorout:
osd_PageFree(out, (SendRingBufferSize + RecvRingBufferSize)
>> PAGE_SHIFT);
kfree(openInfo);
return err;
}

/*
Expand Down Expand Up @@ -461,24 +475,29 @@ int VmbusChannelEstablishGpadl(struct vmbus_channel *Channel, void *Kbuffer,
struct vmbus_channel_gpadl_header *gpadlMsg;
struct vmbus_channel_gpadl_body *gpadlBody;
/* struct vmbus_channel_gpadl_created *gpadlCreated; */
struct vmbus_channel_msginfo *msgInfo;
struct vmbus_channel_msginfo *msgInfo = NULL;
struct vmbus_channel_msginfo *subMsgInfo;
u32 msgCount;
struct list_head *curr;
u32 nextGpadlHandle;
unsigned long flags;
int ret;
int ret = 0;

DPRINT_ENTER(VMBUS);

nextGpadlHandle = atomic_read(&gVmbusConnection.NextGpadlHandle);
atomic_inc(&gVmbusConnection.NextGpadlHandle);

VmbusChannelCreateGpadlHeader(Kbuffer, Size, &msgInfo, &msgCount);
ASSERT(msgInfo != NULL);
ASSERT(msgCount > 0);
ret = VmbusChannelCreateGpadlHeader(Kbuffer, Size, &msgInfo, &msgCount);
if (ret)
return ret;

msgInfo->WaitEvent = osd_WaitEventCreate();
if (!msgInfo->WaitEvent) {
ret = -ENOMEM;
goto Cleanup;
}

gpadlMsg = (struct vmbus_channel_gpadl_header *)msgInfo->Msg;
gpadlMsg->Header.MessageType = ChannelMessageGpadlHeader;
gpadlMsg->ChildRelId = Channel->OfferMsg.ChildRelId;
Expand Down Expand Up @@ -567,9 +586,14 @@ int VmbusChannelTeardownGpadl(struct vmbus_channel *Channel, u32 GpadlHandle)

info = kmalloc(sizeof(*info) +
sizeof(struct vmbus_channel_gpadl_teardown), GFP_KERNEL);
ASSERT(info != NULL);
if (!info)
return -ENOMEM;

info->WaitEvent = osd_WaitEventCreate();
if (!info->WaitEvent) {
kfree(info);
return -ENOMEM;
}

msg = (struct vmbus_channel_gpadl_teardown *)info->Msg;

Expand Down Expand Up @@ -623,7 +647,10 @@ void VmbusChannelClose(struct vmbus_channel *Channel)
/* Send a closing message */
info = kmalloc(sizeof(*info) +
sizeof(struct vmbus_channel_close_channel), GFP_KERNEL);
ASSERT(info != NULL);
/* FIXME: can't do anything other than return here because the
* function is void */
if (!info)
return;

/* info->waitEvent = osd_WaitEventCreate(); */

Expand Down

0 comments on commit c776fd3

Please sign in to comment.