[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    devmem: use mmap64 replace mmap
From:       xiechengliang <xiechengliang1 () huawei ! com>
Date:       2021-09-27 14:06:15
Message-ID: 7c1a240ef5c84ae682f4e1b220d293ec () huawei ! com
[Download RAW message or body]

Subject: [PATCH] devmem: The type of the physical address to be accessed by
devmem is off_t, when the 32-bit Linux kernel support lpae, the physical
address can exceed 4G, and accessing or modifying the  address exceeding 4G
will cause truncation.

function                        old     new   delta
do_cmd                        127     127      +0

Signed-off-by: xiechengliang <xiechengliang1@huawei.com<mailto:xiechengliang1@huawei.com>>
---
miscutils/devmem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/miscutils/devmem.c b/miscutils/devmem.c
index f9f0276bc..594bb440c 100644
--- a/miscutils/devmem.c
+++ b/miscutils/devmem.c
@@ -30,7 +30,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)
       void *map_base, *virt_addr;
       uint64_t read_result;
       uint64_t writeval = writeval; /* for compiler */
-        off_t target;
+       uint64_t target;
       unsigned page_size, mapped_size, offset_in_page;
       int fd;
       unsigned width = 8 * sizeof(int);
@@ -82,12 +82,12 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)
                 * Must map two pages to make it possible: */
                mapped_size *= 2;
       }
-        map_base = mmap(NULL,
+       map_base = mmap64(NULL,
                          mapped_size,
                          argv[3] ? (PROT_READ | PROT_WRITE) : PROT_READ,
                          MAP_SHARED,
                          fd,
-                           target & ~(off_t)(page_size - 1));
+                          target & ~(uint64_t)(page_size - 1));
       if (map_base == MAP_FAILED)
                bb_simple_perror_msg_and_die("mmap");

--
2.12.3


[Attachment #3 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	font-size:10.5pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
span.EmailStyle18
	{mso-style-type:personal;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
span.EmailStyle19
	{mso-style-type:personal-reply;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="#0563C1" vlink="#954F72" \
style="text-justify-trim:punctuation"> <div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Subject: [PATCH] devmem: The type of the \
physical address to be accessed by<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">devmem is off_t, when the 32-bit Linux kernel support lpae, the \
physical<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">address can \
exceed 4G, and accessing or modifying the&nbsp; address exceeding \
4G<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">will cause \
truncation.<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
old&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp; delta<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">do_cmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;127&nbsp;&nbsp;&nbsp;&nbsp; 127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&#43;0<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">Signed-off-by: xiechengliang &lt;<a \
href="mailto:xiechengliang1@huawei.com">xiechengliang1@huawei.com</a>&gt;<o:p></o:p></span></p>
 <p class="MsoNormal"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">miscutils/devmem.c | 6 \
&#43;&#43;&#43;---<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">1 \
file changed, 3 insertions(&#43;), 3 deletions(-)<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">diff --git a/miscutils/devmem.c \
b/miscutils/devmem.c<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">index f9f0276bc..594bb440c 100644<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">--- a/miscutils/devmem.c<o:p></o:p></span></p> \
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; \
b/miscutils/devmem.c<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">@@ \
-30,7 &#43;30,7 @@ int devmem_main(int argc UNUSED_PARAM, char \
**argv)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void *map_base, \
*virt_addr;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint64_t \
read_result;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint64_t writeval = writeval; /* \
for compiler */<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; off_t \
target;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint64_t \
target;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned page_size, mapped_size, \
offset_in_page;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int fd;<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned \
width = 8 * sizeof(int);<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">@@ -82,12 &#43;82,12 @@ int devmem_main(int argc UNUSED_PARAM, char \
**argv)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;* Must map two pages to make it possible: */<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
mapped_size *= 2;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
map_base = mmap(NULL,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map_base = \
mmap64(NULL,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
mapped_size,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
argv[3] ? (PROT_READ | PROT_WRITE) : PROT_READ,<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
MAP_SHARED,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
fd,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
target &amp; ~(off_t)(page_size - 1));<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n \
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
target &amp; ~(uint64_t)(page_size - 1));<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if \
(map_base == MAP_FAILED)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
bb_simple_perror_msg_and_die(&quot;mmap&quot;);<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">-- <o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US">2.12.3<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> </div>
</body>
</html>



_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

--===============1198286126824971183==--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic