diff options
Diffstat (limited to 'drivers/hv/hv_kvp.c')
-rw-r--r-- | drivers/hv/hv_kvp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c index 521c14625b3a..beb8105c0e7b 100644 --- a/drivers/hv/hv_kvp.c +++ b/drivers/hv/hv_kvp.c | |||
@@ -350,6 +350,7 @@ kvp_send_key(struct work_struct *dummy) | |||
350 | __u8 pool = kvp_transaction.kvp_msg->kvp_hdr.pool; | 350 | __u8 pool = kvp_transaction.kvp_msg->kvp_hdr.pool; |
351 | __u32 val32; | 351 | __u32 val32; |
352 | __u64 val64; | 352 | __u64 val64; |
353 | int rc; | ||
353 | 354 | ||
354 | msg = kzalloc(sizeof(*msg) + sizeof(struct hv_kvp_msg) , GFP_ATOMIC); | 355 | msg = kzalloc(sizeof(*msg) + sizeof(struct hv_kvp_msg) , GFP_ATOMIC); |
355 | if (!msg) | 356 | if (!msg) |
@@ -446,7 +447,13 @@ kvp_send_key(struct work_struct *dummy) | |||
446 | } | 447 | } |
447 | 448 | ||
448 | msg->len = sizeof(struct hv_kvp_msg); | 449 | msg->len = sizeof(struct hv_kvp_msg); |
449 | cn_netlink_send(msg, 0, 0, GFP_ATOMIC); | 450 | rc = cn_netlink_send(msg, 0, 0, GFP_ATOMIC); |
451 | if (rc) { | ||
452 | pr_debug("KVP: failed to communicate to the daemon: %d\n", rc); | ||
453 | if (cancel_delayed_work_sync(&kvp_work)) | ||
454 | kvp_respond_to_host(message, HV_E_FAIL); | ||
455 | } | ||
456 | |||
450 | kfree(msg); | 457 | kfree(msg); |
451 | 458 | ||
452 | return; | 459 | return; |