diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c index e8ef0c2a7a..e450f6f49d 100644 --- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c +++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c @@ -977,7 +977,10 @@ UfsRwFlags ( } if (Trd->Ocs == 0) { - *Value = (UINT8)QueryResp->Tsf.Value; + // + // The 'FLAG VALUE' field is at byte offset 3 of QueryResp->Tsf.Value + // + *Value = *((UINT8*)&(QueryResp->Tsf.Value) + 3); } else { Status = EFI_DEVICE_ERROR; } diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c index 0b95e7dddd..93ac958f65 100644 --- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c +++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c @@ -863,7 +863,10 @@ UfsGetReturnDataFromQueryResponse ( case UtpQueryFuncOpcodeSetFlag: case UtpQueryFuncOpcodeClrFlag: case UtpQueryFuncOpcodeTogFlag: - CopyMem (Packet->DataBuffer, &QueryResp->Tsf.Value, sizeof (UINT8)); + // + // The 'FLAG VALUE' field is at byte offset 3 of QueryResp->Tsf.Value + // + *((UINT8*)(Packet->DataBuffer)) = *((UINT8*)&(QueryResp->Tsf.Value) + 3); break; case UtpQueryFuncOpcodeRdAttr: case UtpQueryFuncOpcodeWrAttr: