|
@@ -329,8 +329,6 @@ int vmw_host_get_guestinfo(const char *guest_info_param,
|
|
|
struct rpc_channel channel;
|
|
|
char *msg, *reply = NULL;
|
|
|
size_t reply_len = 0;
|
|
|
- int ret = 0;
|
|
|
-
|
|
|
|
|
|
if (!vmw_msg_enabled)
|
|
|
return -ENODEV;
|
|
@@ -344,15 +342,14 @@ int vmw_host_get_guestinfo(const char *guest_info_param,
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
- if (vmw_open_channel(&channel, RPCI_PROTOCOL_NUM) ||
|
|
|
- vmw_send_msg(&channel, msg) ||
|
|
|
- vmw_recv_msg(&channel, (void *) &reply, &reply_len) ||
|
|
|
- vmw_close_channel(&channel)) {
|
|
|
- DRM_ERROR("Failed to get %s", guest_info_param);
|
|
|
+ if (vmw_open_channel(&channel, RPCI_PROTOCOL_NUM))
|
|
|
+ goto out_open;
|
|
|
|
|
|
- ret = -EINVAL;
|
|
|
- }
|
|
|
+ if (vmw_send_msg(&channel, msg) ||
|
|
|
+ vmw_recv_msg(&channel, (void *) &reply, &reply_len))
|
|
|
+ goto out_msg;
|
|
|
|
|
|
+ vmw_close_channel(&channel);
|
|
|
if (buffer && reply && reply_len > 0) {
|
|
|
/* Remove reply code, which are the first 2 characters of
|
|
|
* the reply
|
|
@@ -369,7 +366,17 @@ int vmw_host_get_guestinfo(const char *guest_info_param,
|
|
|
kfree(reply);
|
|
|
kfree(msg);
|
|
|
|
|
|
- return ret;
|
|
|
+ return 0;
|
|
|
+
|
|
|
+out_msg:
|
|
|
+ vmw_close_channel(&channel);
|
|
|
+ kfree(reply);
|
|
|
+out_open:
|
|
|
+ *length = 0;
|
|
|
+ kfree(msg);
|
|
|
+ DRM_ERROR("Failed to get %s", guest_info_param);
|
|
|
+
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -400,15 +407,22 @@ int vmw_host_log(const char *log)
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
- if (vmw_open_channel(&channel, RPCI_PROTOCOL_NUM) ||
|
|
|
- vmw_send_msg(&channel, msg) ||
|
|
|
- vmw_close_channel(&channel)) {
|
|
|
- DRM_ERROR("Failed to send log\n");
|
|
|
+ if (vmw_open_channel(&channel, RPCI_PROTOCOL_NUM))
|
|
|
+ goto out_open;
|
|
|
|
|
|
- ret = -EINVAL;
|
|
|
- }
|
|
|
+ if (vmw_send_msg(&channel, msg))
|
|
|
+ goto out_msg;
|
|
|
|
|
|
+ vmw_close_channel(&channel);
|
|
|
kfree(msg);
|
|
|
|
|
|
- return ret;
|
|
|
+ return 0;
|
|
|
+
|
|
|
+out_msg:
|
|
|
+ vmw_close_channel(&channel);
|
|
|
+out_open:
|
|
|
+ kfree(msg);
|
|
|
+ DRM_ERROR("Failed to send log\n");
|
|
|
+
|
|
|
+ return -EINVAL;
|
|
|
}
|