public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Guoheyi <guoheyi@huawei.com>
To: "Zeng, Star" <star.zeng@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Tian, Feng" <feng.tian@intel.com>
Subject: 答复: [ScsiDiskDxe] Implict type conversion bug
Date: Tue, 11 Apr 2017 07:05:29 +0000	[thread overview]
Message-ID: <B328F08581D714418202ABF306D3781C3AC13CA7@DGGEMA505-MBS.china.huawei.com> (raw)
In-Reply-To: 0C09AFA07DD0434D9E2A0C6AEB0483103B879151@shsmsx102.ccr.corp.intel.com

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.zeng@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-bounces@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.tian@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

  parent reply	other threads:[~2017-04-11  7:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-10  9:40 [ScsiDiskDxe] Implict type conversion bug Guoheyi
2017-04-10  9:48 ` Zeng, Star
2017-04-11  4:24   ` 答复: " Guoheyi
2017-04-11  7:05   ` Guoheyi [this message]
2017-04-11  7:13     ` Wu, Hao A

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B328F08581D714418202ABF306D3781C3AC13CA7@DGGEMA505-MBS.china.huawei.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox