From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.5398.1644462193922899824 for ; Wed, 09 Feb 2022 19:03:14 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=HxMyOWFB; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: guomin.jiang@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644462193; x=1675998193; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=JYRR4eFJVBXjcQEiYCHxcZVKp5cwH26smy/MQhGnbjk=; b=HxMyOWFBKrznV+Z7ljUQUmGUhYxVmCfhdQoHnk43G76qmvT6+GXmy/Ic cZmL1pNT2yZfudAm+3L8rNpUmsTMwcCdoPn0D/pm4e1ogZuKbm+wbq4of DH6zTwlJydybsruD/5SywT6PHSQBt/bDjVV/XI7NdAG74J7cnEFEh5MEx vob7sY/wz8HJU5oLwC8cGG3nVHu62h89vwtf+3gS3p/T7XN7+uUDplfHN ISoQPD9djU7uYwspEUUPPE7OslTBEU58VJwQ87wGQoaHOZ1WBVa61Gr+b rez2fodoUNagnIKJ+8Ke8Jkv3kI4Ra+UaX+9smSkeopqGQ9RQ43vUqDD5 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10253"; a="335811712" X-IronPort-AV: E=Sophos;i="5.88,357,1635231600"; d="scan'208";a="335811712" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2022 19:03:13 -0800 X-IronPort-AV: E=Sophos;i="5.88,357,1635231600"; d="scan'208";a="526292441" Received: from guominji-mobl.ccr.corp.intel.com ([10.238.11.87]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2022 19:03:10 -0800 From: "Guomin Jiang" To: devel@edk2.groups.io Cc: Guo Dong , Ray Ni , Maurice Ma , Benjamin You Subject: [Patch V2 1/1] UefiPayloadPkg/PayloadLoaderPeim: Force UINTN before save Ptr Date: Thu, 10 Feb 2022 11:03:01 +0800 Message-Id: <20220210030302.2016-1-guomin.jiang@intel.com> X-Mailer: git-send-email 2.30.0.windows.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3818 It will have some potential issue when memory larger than 2G because the high memory address will be fill with 0xFFFFFFFF when do the operation of UINT64 + INTN. V2: 1. Force the data type to UINTN to avoid high dword be filled with 0xFFFFFFFF 2. Keep INTN because the offset may postive or negative. Cc: Guo Dong Cc: Ray Ni Cc: Maurice Ma Cc: Benjamin You Signed-off-by: Guomin Jiang --- UefiPayloadPkg/PayloadLoaderPeim/ElfLib/Elf64Lib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UefiPayloadPkg/PayloadLoaderPeim/ElfLib/Elf64Lib.c b/UefiPayloadPkg/PayloadLoaderPeim/ElfLib/Elf64Lib.c index dc47a05c6e4a..68200fcadd3f 100644 --- a/UefiPayloadPkg/PayloadLoaderPeim/ElfLib/Elf64Lib.c +++ b/UefiPayloadPkg/PayloadLoaderPeim/ElfLib/Elf64Lib.c @@ -143,7 +143,7 @@ ProcessRelocation64 ( DEBUG ((DEBUG_INFO, "Unsupported relocation type %02X\n", Type)); ASSERT (FALSE); } else { - *Ptr += Delta; + *Ptr = *(UINTN *)Ptr + Delta; } break; @@ -177,12 +177,12 @@ ProcessRelocation64 ( // Calculation: B + A // if (RelaType == SHT_RELA) { - *Ptr = Delta + Rela->r_addend; + *Ptr = Delta + (UINTN)Rela->r_addend; } else { // // A is stored in the field of relocation for REL type. // - *Ptr = Delta + *Ptr; + *Ptr = Delta + *(UINTN *)Ptr; } } else { // -- 2.30.0.windows.2