On 03/31/20 13:04, Liran Alon wrote: > Sean reported that VS2019 build produce the following build error: > INFO - PvScsi.c > INFO - Generating code > INFO - d:\a\1\s\OvmfPkg\PvScsiDxe\PvScsi.c(459): error C2220: the following > warning is treated as an error > INFO - d:\a\1\s\OvmfPkg\PvScsiDxe\PvScsi.c(459): warning C4244: '=': > conversion from 'const UINT16' to 'UINT8', possible loss of data > > This result from an implicit cast from PVSCSI Response->ScsiStatus > (Which is UINT16) to Packet->TargetResponse (Which is UINT8). > > Fix this issue by adding an appropriate explicit cast and verify with > assert that this truncation do not result in loss of data. > > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2651 > Reported-by: Sean Brogan <[email protected]> > Signed-off-by: Liran Alon <[email protected]> > --- > OvmfPkg/PvScsiDxe/PvScsi.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/OvmfPkg/PvScsiDxe/PvScsi.c b/OvmfPkg/PvScsiDxe/PvScsi.c > index 0a66c98421a9..1ca50390c0e5 100644 > --- a/OvmfPkg/PvScsiDxe/PvScsi.c > +++ b/OvmfPkg/PvScsiDxe/PvScsi.c > @@ -455,8 +455,12 @@ HandleResponse ( > > // > // Report target status > + // (Strangely, PVSCSI interface defines Response->ScsiStatus as UINT16. > + // But it should de-facto always have a value that fits UINT8. To avoid > + // unexpected behavior, verify value is in UINT8 bounds before casting) > // > - Packet->TargetStatus = Response->ScsiStatus; > + ASSERT (Response->ScsiStatus <= MAX_UINT8); > + Packet->TargetStatus = (UINT8)Response->ScsiStatus; > > // > // Host adapter status and function return value depend on >
Pushed as commit 98936dc4f44b4ef47e7221d435de06a0813aa00a, via <https://github.com/tianocore/edk2/pull/491>. Thanks, Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#56855): https://edk2.groups.io/g/devel/message/56855 Mute This Topic: https://groups.io/mt/72673992/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
