Hi Gary, Thanks for the reporting, I will take a look at all the cases you mentioned.
Best Regards, Hao Wu > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Guoheyi > Sent: Tuesday, April 11, 2017 3:05 PM > To: Zeng, Star; edk2-devel@lists.01.org > Cc: Tian, Feng > Subject: [edk2] 答复: [ScsiDiskDxe] Implict type conversion bug > > Hi Star, > > I searched " LastLba3" in EDK2 code and found there were some other code > similar to this one, could you please check whether they need to be fixed as > well? > > IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Atapi.c: IdeDev- > >BlkIo.Media->LastBlock = (Data.LastLba3 << 24) | > IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Atapi.c: IdeDev- > >BlkIo.Media->LastBlock = (FormatData.LastLba3 << 24) | > MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c: Private- > >Media[DeviceIndex].LastBlock = (Capacity16.LastLba3 << 24) | > (Capacity16.LastLba2 << 16) | (Capacity16.LastLba1 << 8) | > Capacity16.LastLba0; > MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c: Private- > >Media[DeviceIndex].LastBlock = (Capacity.LastLba3 << 24) | > (Capacity.LastLba2 << 16) | (Capacity.LastLba1 << 8) | Capacity.LastLba0; > MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c: MediaInfo->LastBlock = > (Data.LastLba3 << 24) | (Data.LastLba2 << 16) | (Data.LastLba1 << 8) | > Data.LastLba0; > MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c: MediaInfo->LastBlock = > (FormatData.LastLba3 << 24) | > > (I think the two lines below should be OK for LastBlock is defined as UINT32) > MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c: LastBlock = (Data.LastLba3 << > 24) | (Data.LastLba2 << 16) | (Data.LastLba1 << 8) | Data.LastLba0; > MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c: LastBlock = > (FormatData.LastLba3 << 24) | (FormatData.LastLba2 << 16) | > (FormatData.LastLba1 << 8) | FormatData.LastLba0; > > > Thanks and regards, > > Gary (Heyi Guo) > > > -----邮件原件----- > 发件人: Guoheyi > 发送时间: 2017年4月11日 12:25 > 收件人: 'Zeng, Star'; edk2-devel@lists.01.org > 抄送: Tian, Feng > 主题: 答复: [edk2] [ScsiDiskDxe] Implict type conversion bug > > Thanks for your quick fix :) > > -----邮件原件----- > 发件人: Zeng, Star [mailto:star.z...@intel.com] > 发送时间: 2017年4月10日 17:48 > 收件人: Guoheyi; edk2-devel@lists.01.org > 抄送: Tian, Feng; Zeng, Star > 主题: RE: [edk2] [ScsiDiskDxe] Implict type conversion bug > > Hao has sent patch for this issue. > You can search emails with title "[edk2] [PATCH] MdeModulePkg/ScsiDiskDxe: > Fix potential implicit sign extension". > > Thanks, > Star > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Guoheyi > Sent: Monday, April 10, 2017 5:40 PM > To: edk2-devel@lists.01.org > Cc: Tian, Feng <feng.t...@intel.com> > Subject: [edk2] [ScsiDiskDxe] Implict type conversion bug > > Hi folks, > > In MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c, Line 2757, we have the > code as below: > > ScsiDiskDevice->BlkIo.Media->LastBlock = (Capacity10->LastLba3 << 24) | > (Capacity10->LastLba2 << 16) | > (Capacity10->LastLba1 << 8) | > Capacity10->LastLba0; > > However, we tested on VS2008 and found that the intermediate result would be > convert to INT32 then INT64 implicitly, so the result will be sign extended > and > LastBlock may not be assigned with what is expected. We can simply test > LastLba3 >= 0x80 to see what will happen. > > Please let me know your comments. > > Thanks and regards, > > Gary (Heyi Guo) > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel