Commit 27dc0700 authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Vasily Gorbik

s390/uv: Fix handling of length extensions

The query parameter block might contain additional information and can
be extended in the future. If the size of the block does not suffice we
get an error code of rc=0x100.  The buffer will contain all information
up to the specified size and the hypervisor/guest simply do not need the
additional information as they do not know about the new data.  That
means that we can (and must) accept rc=0x100 as success.

Cc: stable@vger.kernel.org
Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
Fixes: 5abb9351 ("s390/uv: introduce guest side ultravisor code")
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 2c25b3f6
...@@ -15,7 +15,8 @@ void uv_query_info(void) ...@@ -15,7 +15,8 @@ void uv_query_info(void)
if (!test_facility(158)) if (!test_facility(158))
return; return;
if (uv_call(0, (uint64_t)&uvcb)) /* rc==0x100 means that there is additional data we do not process */
if (uv_call(0, (uint64_t)&uvcb) && uvcb.header.rc != 0x100)
return; return;
if (test_bit_inv(BIT_UVC_CMD_SET_SHARED_ACCESS, (unsigned long *)uvcb.inst_calls_list) && if (test_bit_inv(BIT_UVC_CMD_SET_SHARED_ACCESS, (unsigned long *)uvcb.inst_calls_list) &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment