@@ -238,8 +238,7 @@ EXPORT_SYMBOL_GPL(vmbus_send_tl_connect_request);
238
238
* create_gpadl_header - Creates a gpadl for the specified buffer
239
239
*/
240
240
static int create_gpadl_header (void * kbuffer , u32 size ,
241
- struct vmbus_channel_msginfo * * msginfo ,
242
- u32 * messagecount )
241
+ struct vmbus_channel_msginfo * * msginfo )
243
242
{
244
243
int i ;
245
244
int pagecount ;
@@ -283,7 +282,6 @@ static int create_gpadl_header(void *kbuffer, u32 size,
283
282
gpadl_header -> range [0 ].pfn_array [i ] = slow_virt_to_phys (
284
283
kbuffer + PAGE_SIZE * i ) >> PAGE_SHIFT ;
285
284
* msginfo = msgheader ;
286
- * messagecount = 1 ;
287
285
288
286
pfnsum = pfncount ;
289
287
pfnleft = pagecount - pfncount ;
@@ -323,7 +321,6 @@ static int create_gpadl_header(void *kbuffer, u32 size,
323
321
}
324
322
325
323
msgbody -> msgsize = msgsize ;
326
- (* messagecount )++ ;
327
324
gpadl_body =
328
325
(struct vmbus_channel_gpadl_body * )msgbody -> msg ;
329
326
@@ -352,6 +349,8 @@ static int create_gpadl_header(void *kbuffer, u32 size,
352
349
msgheader = kzalloc (msgsize , GFP_KERNEL );
353
350
if (msgheader == NULL )
354
351
goto nomem ;
352
+
353
+ INIT_LIST_HEAD (& msgheader -> submsglist );
355
354
msgheader -> msgsize = msgsize ;
356
355
357
356
gpadl_header = (struct vmbus_channel_gpadl_header * )
@@ -366,7 +365,6 @@ static int create_gpadl_header(void *kbuffer, u32 size,
366
365
kbuffer + PAGE_SIZE * i ) >> PAGE_SHIFT ;
367
366
368
367
* msginfo = msgheader ;
369
- * messagecount = 1 ;
370
368
}
371
369
372
370
return 0 ;
@@ -391,7 +389,6 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
391
389
struct vmbus_channel_gpadl_body * gpadl_body ;
392
390
struct vmbus_channel_msginfo * msginfo = NULL ;
393
391
struct vmbus_channel_msginfo * submsginfo ;
394
- u32 msgcount ;
395
392
struct list_head * curr ;
396
393
u32 next_gpadl_handle ;
397
394
unsigned long flags ;
@@ -400,7 +397,7 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
400
397
next_gpadl_handle =
401
398
(atomic_inc_return (& vmbus_connection .next_gpadl_handle ) - 1 );
402
399
403
- ret = create_gpadl_header (kbuffer , size , & msginfo , & msgcount );
400
+ ret = create_gpadl_header (kbuffer , size , & msginfo );
404
401
if (ret )
405
402
return ret ;
406
403
@@ -423,24 +420,21 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
423
420
if (ret != 0 )
424
421
goto cleanup ;
425
422
426
- if (msgcount > 1 ) {
427
- list_for_each (curr , & msginfo -> submsglist ) {
423
+ list_for_each (curr , & msginfo -> submsglist ) {
424
+ submsginfo = (struct vmbus_channel_msginfo * )curr ;
425
+ gpadl_body =
426
+ (struct vmbus_channel_gpadl_body * )submsginfo -> msg ;
428
427
429
- submsginfo = ( struct vmbus_channel_msginfo * ) curr ;
430
- gpadl_body =
431
- ( struct vmbus_channel_gpadl_body * ) submsginfo -> msg ;
428
+ gpadl_body -> header . msgtype =
429
+ CHANNELMSG_GPADL_BODY ;
430
+ gpadl_body -> gpadl = next_gpadl_handle ;
432
431
433
- gpadl_body -> header .msgtype =
434
- CHANNELMSG_GPADL_BODY ;
435
- gpadl_body -> gpadl = next_gpadl_handle ;
432
+ ret = vmbus_post_msg (gpadl_body ,
433
+ submsginfo -> msgsize -
434
+ sizeof (* submsginfo ));
435
+ if (ret != 0 )
436
+ goto cleanup ;
436
437
437
- ret = vmbus_post_msg (gpadl_body ,
438
- submsginfo -> msgsize -
439
- sizeof (* submsginfo ));
440
- if (ret != 0 )
441
- goto cleanup ;
442
-
443
- }
444
438
}
445
439
wait_for_completion (& msginfo -> waitevent );
446
440
0 commit comments