greybus: fix vibrator request_operation()

And this fixes a problem similar the last two, this time found in
the vibrator protcool driver code.

Change a variable name in get_version() to reflect that it holds
a response message, not a request message.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/vibrator-gb.c b/drivers/staging/greybus/vibrator-gb.c
index 9b15ae2..3e46fa6 100644
--- a/drivers/staging/greybus/vibrator-gb.c
+++ b/drivers/staging/greybus/vibrator-gb.c
@@ -51,19 +51,12 @@
 			     void *response, int response_size)
 {
 	struct gb_operation *operation;
-	struct gb_vibrator_simple_response *fake_request;
-	u8 *local_response;
+	struct gb_vibrator_simple_response *fake_response;
 	int ret;
 
-	local_response = kmalloc(response_size, GFP_KERNEL);
-	if (!local_response)
-		return -ENOMEM;
-
 	operation = gb_operation_create(connection, type, 0, response_size);
-	if (!operation) {
-		kfree(local_response);
+	if (!operation)
 		return -ENOMEM;
-	}
 
 	/* Synchronous operation--no callback */
 	ret = gb_operation_request_send(operation, NULL);
@@ -77,19 +70,18 @@
 	 * layout for where the status is, so cast this to a random request so
 	 * we can see the status easier.
 	 */
-	fake_request = (struct gb_vibrator_simple_response *)local_response;
-	if (fake_request->status) {
+	fake_response = operation->response.payload;
+	if (fake_response->status) {
 		gb_connection_err(connection, "response %hhu",
-			fake_request->status);
+			fake_response->status);
 		ret = -EIO;
 	} else {
 		/* Good request, so copy to the caller's buffer */
 		if (response_size && response)
-			memcpy(response, local_response, response_size);
+			memcpy(response, fake_response, response_size);
 	}
 out:
 	gb_operation_destroy(operation);
-	kfree(local_response);
 
 	return ret;
 }
@@ -101,24 +93,24 @@
 static int get_version(struct gb_vibrator_device *vib)
 {
 	struct gb_connection *connection = vib->connection;
-	struct gb_vibrator_proto_version_response version_request;
+	struct gb_vibrator_proto_version_response version_response;
 	int retval;
 
 	retval = request_operation(connection,
 				   GB_VIBRATOR_TYPE_PROTOCOL_VERSION,
-				   &version_request, sizeof(version_request));
+				   &version_response, sizeof(version_response));
 	if (retval)
 		return retval;
 
-	if (version_request.major > GB_VIBRATOR_VERSION_MAJOR) {
+	if (version_response.major > GB_VIBRATOR_VERSION_MAJOR) {
 		dev_err(&connection->dev,
 			"unsupported major version (%hhu > %hhu)\n",
-			version_request.major, GB_VIBRATOR_VERSION_MAJOR);
+			version_response.major, GB_VIBRATOR_VERSION_MAJOR);
 		return -ENOTSUPP;
 	}
 
-	vib->version_major = version_request.major;
-	vib->version_minor = version_request.minor;
+	vib->version_major = version_response.major;
+	vib->version_minor = version_response.minor;
 	return 0;
 }