greybus: svc: pwrmon: validate svc protocol op status when getting rail names

AP should check for Greybus SVC Protocol Operation Status to determine if the
operation was successfully completed by the SVC

Testing Done:
- Successfully getting the rail names in the pwrmon_dummy sandbox branch

Signed-off-by: David Lin <dtwlin@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
David Lin 2016-06-08 09:39:00 +02:00 committed by Greg Kroah-Hartman
parent 44d6449350
commit 8fb76c3cfd
2 changed files with 10 additions and 1 deletions

View File

@ -1145,6 +1145,7 @@ struct gb_svc_pwrmon_rail_count_get_response {
#define GB_SVC_PWRMON_RAIL_NAME_BUFSIZE 32
struct gb_svc_pwrmon_rail_names_get_response {
__u8 status;
__u8 name[0][GB_SVC_PWRMON_RAIL_NAME_BUFSIZE];
} __packed;

View File

@ -135,6 +135,13 @@ static int gb_svc_pwrmon_rail_names_get(struct gb_svc *svc,
return ret;
}
if (response->status != GB_SVC_OP_SUCCESS) {
dev_err(&svc->dev,
"SVC error while getting rail names: %u\n",
response->status);
return -EREMOTEIO;
}
return 0;
}
@ -778,7 +785,8 @@ static void gb_svc_pwrmon_debugfs_init(struct gb_svc *svc)
if (!rail_count || rail_count > GB_SVC_PWRMON_MAX_RAIL_COUNT)
goto err_pwrmon_debugfs;
bufsize = GB_SVC_PWRMON_RAIL_NAME_BUFSIZE * rail_count;
bufsize = sizeof(*rail_names) +
GB_SVC_PWRMON_RAIL_NAME_BUFSIZE * rail_count;
rail_names = kzalloc(bufsize, GFP_KERNEL);
if (!rail_names)