diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2021-07-20 15:07:26 +1000 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2021-07-29 10:59:49 +1000 |
commit | 14c7e06e722af6f5459ab92bae3023bb336fa497 (patch) | |
tree | 9185c55770b44a2f070579bc15ae48af05a88e81 /include | |
parent | 2d1154bd95a8bfea30cc59de8e080e5a016a9bee (diff) |
ppc/vof: Fix Coverity issues
Coverity reported issues which are caused by mixing of signed return codes
from DTC and unsigned return codes of the client interface.
This introduces PROM_ERROR and makes distinction between the error types.
This fixes NEGATIVE_RETURNS, OVERRUN issues reported by Coverity.
This adds a comment about the return parameters number in the VOF hcall.
The reason for such counting is to keep the numbers look the same in
vof_client_handle() and the Linux (an OF client).
vmc->client_architecture_support() returns target_ulong and we want to
propagate this to the client (for example H_MULTI_THREADS_ACTIVE).
The VOF path to do_client_architecture_support() needs chopping off
the top 32bit but SLOF's H_CAS does not; and either way the return values
are either 0 or 32bit negative error code. For now this chops
the top 32bits.
This makes "claim" fail if the allocated address is above 4GB as
the client interface is 32bit. This still allows claiming memory above
4GB as potentially initrd can be put there and the client can read
the address from the FDT's "available" property.
Fixes: CID 1458139, 1458138, 1458137, 1458133, 1458132
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Message-Id: <20210720050726.2737405-1-aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/hw/ppc/vof.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/hw/ppc/vof.h b/include/hw/ppc/vof.h index 640be46163..97fdef758b 100644 --- a/include/hw/ppc/vof.h +++ b/include/hw/ppc/vof.h @@ -55,4 +55,6 @@ struct VofMachineIfClass { address_space_write(&address_space_memory, \ (pa), MEMTXATTRS_UNSPECIFIED, (buf), (size)) +#define PROM_ERROR (~0U) + #endif /* HW_VOF_H */ |