[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 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> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">function \
old new delta<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">do_cmd \
127 127 \
+0<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">Signed-off-by: xiechengliang <<a \
href="mailto:xiechengliang1@huawei.com">xiechengliang1@huawei.com</a>><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 \
+++---<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">1 \
file changed, 3 insertions(+), 3 deletions(-)<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">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">+++ \
b/miscutils/devmem.c<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">@@ \
-30,7 +30,7 @@ int devmem_main(int argc UNUSED_PARAM, char \
**argv)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> void *map_base, \
*virt_addr;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> uint64_t \
read_result;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> uint64_t writeval = writeval; /* \
for compiler */<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">- off_t \
target;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">+ uint64_t \
target;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> unsigned page_size, mapped_size, \
offset_in_page;<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> int fd;<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US"> unsigned \
width = 8 * sizeof(int);<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">@@ -82,12 +82,12 @@ int devmem_main(int argc UNUSED_PARAM, char \
**argv)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> \
* Must map two pages to make it possible: */<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US"> \
mapped_size *= 2;<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">- \
map_base = mmap(NULL,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">+ map_base = \
mmap64(NULL,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> \
mapped_size,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> \
argv[3] ? (PROT_READ | PROT_WRITE) : PROT_READ,<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US"> \
MAP_SHARED,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> \
fd,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US">- \
\
target & ~(off_t)(page_size - 1));<o:p></o:p></span></p> <p \
class="MsoNormal"><span \
lang="EN-US">+ &n \
bsp; \
target & ~(uint64_t)(page_size - 1));<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US"> if \
(map_base == MAP_FAILED)<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US"> \
bb_simple_perror_msg_and_die("mmap");<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">-- <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> </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