From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0419E21CEB0E3 for ; Tue, 12 Sep 2017 01:25:28 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Sep 2017 01:28:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,382,1500966000"; d="scan'208";a="150293653" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga005.fm.intel.com with ESMTP; 12 Sep 2017 01:28:25 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Sep 2017 01:28:24 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Sep 2017 01:28:25 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.117]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.93]) with mapi id 14.03.0319.002; Tue, 12 Sep 2017 16:28:22 +0800 From: "Ni, Ruiyu" To: Laszlo Ersek , "Bi, Dandan" , edk2-devel-01 CC: "Dong, Eric" , "Zeng, Star" , Ard Biesheuvel Thread-Topic: [edk2] [PATCH 4/5] MdeModulePkg/PartitionDxe: don't divide 64-bit values with C operators Thread-Index: AQHTKcmg4uqcZtyZfkSxSaY8zepJwaKwOdAAgAAmZACAAI5C4A== Date: Tue, 12 Sep 2017 08:28:21 +0000 Deferred-Delivery: Tue, 12 Sep 2017 08:28:00 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BA2BF29@SHSMSX104.ccr.corp.intel.com> References: <20170910001304.8628-1-lersek@redhat.com> <20170910001304.8628-5-lersek@redhat.com> <3C0D5C461C9E904E8F62152F6274C0BB3B96FA5D@shsmsx102.ccr.corp.intel.com> <8e68d0c5-76c0-8a1d-bd38-5bb1a6c6b918@redhat.com> In-Reply-To: <8e68d0c5-76c0-8a1d-bd38-5bb1a6c6b918@redhat.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 4/5] MdeModulePkg/PartitionDxe: don't divide 64-bit values with C operators X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Sep 2017 08:25:29 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Ruiyu Ni Thanks/Ray > -----Original Message----- > From: Laszlo Ersek [mailto:lersek@redhat.com] > Sent: Tuesday, September 12, 2017 3:59 PM > To: Bi, Dandan ; edk2-devel-01 devel@lists.01.org> > Cc: Ni, Ruiyu ; Dong, Eric ; Zen= g, > Star ; Ard Biesheuvel > Subject: Re: [edk2] [PATCH 4/5] MdeModulePkg/PartitionDxe: don't divide > 64-bit values with C operators >=20 > On 09/12/17 07:41, Bi, Dandan wrote: > > Hi Laszlo, > > > > When do you plan to push this patch? IA32 build is blocked for this iss= ue > now. >=20 > I was ready to push the series yesterday; I just hoped I'd get review > feedback from MdeModulePkg maintainers as well, and/or from Ray, in one > or two days. >=20 > These are strongly localized changes that require no knowledge of the UDF > driver. (I don't have that knowledge myself, to begin with.) At least an > Acked-by would be nice. >=20 > If someone from Intel tells me I can push this with the R-b's that are cu= rrently > on the list, I'm totally game. >=20 > Thanks! > Laszlo >=20 > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > > Laszlo Ersek > > Sent: Sunday, September 10, 2017 8:13 AM > > To: edk2-devel-01 > > Cc: Ni, Ruiyu ; Dong, Eric ; > > Zeng, Star ; Ard Biesheuvel > > > > Subject: [edk2] [PATCH 4/5] MdeModulePkg/PartitionDxe: don't divide > > 64-bit values with C operators > > > > In edk2, the division and shifting of 64-bit values are forbidden with = C- > language operators, because the compiler may generate intrinsic calls for > them. > > > > For example, clang-3.8 emits a call to "__umoddi3" for > > > > UDF_LOGICAL_SECTOR_SIZE % Media->BlockSize > > > > in PartitionInstallUdfChildHandles(), if PartitionDxe is built for IA32= , which > then fails to link. > > > > UDF_LOGICAL_SECTOR_SIZE has type UINT64, while > EFI_BLOCK_IO_MEDIA.BlockSize has type UINT32(). Replace the % operator > with a DivU64x32Remainder() call. > > > > Cc: Ard Biesheuvel > > Cc: Eric Dong > > Cc: Paulo Alcantara > > Cc: Ruiyu Ni > > Cc: Star Zeng > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Laszlo Ersek > > --- > > MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c > > b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c > > index c1d44809bfd2..c491ef25f47e 100644 > > --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c > > +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c > > @@ -234,10 +234,11 @@ PartitionInstallUdfChildHandles ( > > IN EFI_BLOCK_IO_PROTOCOL *BlockIo, > > IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, > > IN EFI_DEVICE_PATH_PROTOCOL *DevicePath > > ) > > { > > + UINT32 RemainderByMediaBlockSize; > > EFI_STATUS Status; > > EFI_BLOCK_IO_MEDIA *Media; > > EFI_DEVICE_PATH_PROTOCOL *DevicePathNode; > > EFI_GUID *VendorDefinedGuid; > > EFI_GUID UdfDevPathGuid =3D EFI_UDF_DEVICE_PATH_= GUID; > > @@ -246,11 +247,16 @@ PartitionInstallUdfChildHandles ( > > Media =3D BlockIo->Media; > > > > // > > // Check if UDF logical block size is multiple of underlying device = block size > > // > > - if ((UDF_LOGICAL_SECTOR_SIZE % Media->BlockSize) !=3D 0 || > > + DivU64x32Remainder ( > > + UDF_LOGICAL_SECTOR_SIZE, // Dividend > > + Media->BlockSize, // Divisor > > + &RemainderByMediaBlockSize // Remainder > > + ); > > + if (RemainderByMediaBlockSize !=3D 0 || > > Media->BlockSize > UDF_LOGICAL_SECTOR_SIZE) { > > return EFI_NOT_FOUND; > > } > > > > DevicePathNode =3D DevicePath; > > -- > > 2.14.1.3.gb7cf6e02401b > > > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > >