diff options
author | David Kershner <david.kershner@unisys.com> | 2017-03-28 09:34:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-03-29 09:17:03 +0200 |
commit | 711c67f4ecc81a8b1ebf26844c5874888078ed46 (patch) | |
tree | 38c2b02efa30f5f5b86730e076f937b5a313a33d | |
parent | e0d210ae5fddfdc9a657ea5a21de9d54f8315336 (diff) |
staging: unisys: visorbus: don't ignore visorchannel_read error
Don't override the visorchannel_read_error, just return the
error that it generates.
Signed-off-by: David Kershner <david.kershner@unisys.com>
Reviewed-by: Reviewed-by: Tim Sell <timothy.sell@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/unisys/visorbus/visorbus_main.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c b/drivers/staging/unisys/visorbus/visorbus_main.c index f5b637ccf1cd..af9bf2453b44 100644 --- a/drivers/staging/unisys/visorbus/visorbus_main.c +++ b/drivers/staging/unisys/visorbus/visorbus_main.c @@ -691,6 +691,8 @@ static int get_vbus_header_info(struct visorchannel *chan, struct spar_vbus_headerinfo *hdr_info) { + int err; + if (!spar_check_channel(visorchannel_get_header(chan), spar_vbus_channel_protocol_uuid, "vbus", @@ -699,10 +701,11 @@ get_vbus_header_info(struct visorchannel *chan, SPAR_VBUS_CHANNEL_PROTOCOL_SIGNATURE)) return -EINVAL; - if (visorchannel_read(chan, sizeof(struct channel_header), hdr_info, - sizeof(*hdr_info)) < 0) { - return -EIO; - } + err = visorchannel_read(chan, sizeof(struct channel_header), hdr_info, + sizeof(*hdr_info)); + if (err < 0) + return err; + if (hdr_info->struct_bytes < sizeof(struct spar_vbus_headerinfo)) return -EINVAL; |