On 04/30/15 14:04, Ard Biesheuvel wrote: > InternalData may not be aligned to the size of the type > we are writing, so use WriteUnalignedXX() instead. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > --- > MdeModulePkg/Universal/PCD/Dxe/Service.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/MdeModulePkg/Universal/PCD/Dxe/Service.c > b/MdeModulePkg/Universal/PCD/Dxe/Service.c > index 9b4701bdd749..f071fc58361b 100644 > --- a/MdeModulePkg/Universal/PCD/Dxe/Service.c > +++ b/MdeModulePkg/Universal/PCD/Dxe/Service.c > @@ -1259,15 +1259,15 @@ SetWorker ( > break; > > case sizeof(UINT16): > - *((UINT16 *) InternalData) = *((UINT16 *) Data); > + WriteUnaligned16 (InternalData, *((UINT16 *) Data)); > break; > > case sizeof(UINT32): > - *((UINT32 *) InternalData) = *((UINT32 *) Data); > + WriteUnaligned32 (InternalData, *((UINT32 *) Data)); > break; > > case sizeof(UINT64): > - *((UINT64 *) InternalData) = *((UINT64 *) Data); > + WriteUnaligned64 (InternalData, *((UINT64 *) Data)); > break; > > default: >
What guarantees that you can dereference Data, for reading? Shouldn't the pattern be: WriteUnalignedXX (InternalData, ReadUnalignedXX (Data)); (The reason why this isn't necessary could be obvious from the code, but you surely don't expect me to look at the code, do you. :)) Laszlo ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel