Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git]
/
kernel
/
lib
/
hexdump.c
diff --git
a/kernel/lib/hexdump.c
b/kernel/lib/hexdump.c
index
7ea0969
..
992457b
100644
(file)
--- a/
kernel/lib/hexdump.c
+++ b/
kernel/lib/hexdump.c
@@
-11,6
+11,7
@@
#include <linux/ctype.h>
#include <linux/kernel.h>
#include <linux/export.h>
#include <linux/ctype.h>
#include <linux/kernel.h>
#include <linux/export.h>
+#include <asm/unaligned.h>
const char hex_asc[] = "0123456789abcdef";
EXPORT_SYMBOL(hex_asc);
const char hex_asc[] = "0123456789abcdef";
EXPORT_SYMBOL(hex_asc);
@@
-139,7
+140,7
@@
int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize,
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%16.16llx", j ? " " : "",
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%16.16llx", j ? " " : "",
-
(unsigned long long)*
(ptr8 + j));
+
get_unaligned
(ptr8 + j));
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
@@
-150,7
+151,7
@@
int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize,
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%8.8x", j ? " " : "",
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%8.8x", j ? " " : "",
-
*
(ptr4 + j));
+
get_unaligned
(ptr4 + j));
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
@@
-161,18
+162,22
@@
int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize,
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%4.4x", j ? " " : "",
for (j = 0; j < ngroups; j++) {
ret = snprintf(linebuf + lx, linebuflen - lx,
"%s%4.4x", j ? " " : "",
-
*
(ptr2 + j));
+
get_unaligned
(ptr2 + j));
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
}
} else {
for (j = 0; j < len; j++) {
if (ret >= linebuflen - lx)
goto overflow1;
lx += ret;
}
} else {
for (j = 0; j < len; j++) {
- if (linebuflen < lx +
3
)
+ if (linebuflen < lx +
2
)
goto overflow2;
ch = ptr[j];
linebuf[lx++] = hex_asc_hi(ch);
goto overflow2;
ch = ptr[j];
linebuf[lx++] = hex_asc_hi(ch);
+ if (linebuflen < lx + 2)
+ goto overflow2;
linebuf[lx++] = hex_asc_lo(ch);
linebuf[lx++] = hex_asc_lo(ch);
+ if (linebuflen < lx + 2)
+ goto overflow2;
linebuf[lx++] = ' ';
}
if (j)
linebuf[lx++] = ' ';
}
if (j)