diff options
Diffstat (limited to 'drivers/hv/hv_snapshot.c')
-rw-r--r-- | drivers/hv/hv_snapshot.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/hv/hv_snapshot.c b/drivers/hv/hv_snapshot.c index 21e51be74e6c..9d5e0d1efdb5 100644 --- a/drivers/hv/hv_snapshot.c +++ b/drivers/hv/hv_snapshot.c | |||
@@ -96,6 +96,7 @@ vss_cn_callback(struct cn_msg *msg, struct netlink_skb_parms *nsp) | |||
96 | static void vss_send_op(struct work_struct *dummy) | 96 | static void vss_send_op(struct work_struct *dummy) |
97 | { | 97 | { |
98 | int op = vss_transaction.msg->vss_hdr.operation; | 98 | int op = vss_transaction.msg->vss_hdr.operation; |
99 | int rc; | ||
99 | struct cn_msg *msg; | 100 | struct cn_msg *msg; |
100 | struct hv_vss_msg *vss_msg; | 101 | struct hv_vss_msg *vss_msg; |
101 | 102 | ||
@@ -111,7 +112,12 @@ static void vss_send_op(struct work_struct *dummy) | |||
111 | vss_msg->vss_hdr.operation = op; | 112 | vss_msg->vss_hdr.operation = op; |
112 | msg->len = sizeof(struct hv_vss_msg); | 113 | msg->len = sizeof(struct hv_vss_msg); |
113 | 114 | ||
114 | cn_netlink_send(msg, 0, 0, GFP_ATOMIC); | 115 | rc = cn_netlink_send(msg, 0, 0, GFP_ATOMIC); |
116 | if (rc) { | ||
117 | pr_warn("VSS: failed to communicate to the daemon: %d\n", rc); | ||
118 | if (cancel_delayed_work_sync(&vss_timeout_work)) | ||
119 | vss_respond_to_host(HV_E_FAIL); | ||
120 | } | ||
115 | kfree(msg); | 121 | kfree(msg); |
116 | 122 | ||
117 | return; | 123 | return; |