[patch v2] PS3: Fix printing of os-area magic numbers
Geoff Levand
geoffrey.levand at am.sony.com
Fri Nov 23 09:08:27 EST 2007
Fix a bug in the printing of the os-area magic numbers which assumed that
magic numbers were zero terminated strings. The magic numbers are represented
in memory as integers. If the os-area sections are not initialized correctly
they could contained random data that would be printed to the display.
CC: Geert Uytterhoeven <Geert.Uytterhoeven at sonycom.com>
Signed-off-by: Geoff Levand <geoffrey.levand at am.sony.com>
---
v2: handle unprintable chars.
Paul,
This fixes a very minor bug in linus' current tree. Please consider
for 2.6.24.
-Geoff
arch/powerpc/platforms/ps3/os-area.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
--- a/arch/powerpc/platforms/ps3/os-area.c
+++ b/arch/powerpc/platforms/ps3/os-area.c
@@ -23,6 +23,7 @@
#include <linux/workqueue.h>
#include <linux/fs.h>
#include <linux/syscalls.h>
+#include <linux/ctype.h>
#include <asm/lmb.h>
@@ -269,8 +270,17 @@ static void __init os_area_get_property(
static void _dump_header(const struct os_area_header *h, const char *func,
int line)
{
+ u8 str[sizeof(h->magic_num) + 1];
+ u8 *s, *d;
+
+ for(s = h->magic_num, d = str; s < h->magic_num + sizeof(h->magic_num);
+ s++, d++) {
+ *d = isprint(*s) ? *s : '.';
+ }
+ d[sizeof(h->magic_num)] = 0;
+
pr_debug("%s:%d: h.magic_num: '%s'\n", func, line,
- h->magic_num);
+ str);
pr_debug("%s:%d: h.hdr_version: %u\n", func, line,
h->hdr_version);
pr_debug("%s:%d: h.db_area_offset: %u\n", func, line,
@@ -484,8 +494,17 @@ static int db_get_rtc_diff(const struct
static void _dump_db(const struct os_area_db *db, const char *func,
int line)
{
+ u8 str[sizeof(db->magic_num) + 1];
+ u8 *s, *d;
+
+ for(s = (u8*)&db->magic_num, d = str;
+ s < (u8*)&db->magic_num + sizeof(db->magic_num); s++, d++) {
+ *d = isprint(*s) ? *s : '.';
+ }
+ d[sizeof(db->magic_num)] = 0;
+
pr_debug("%s:%d: db.magic_num: '%s'\n", func, line,
- (const char*)&db->magic_num);
+ str);
pr_debug("%s:%d: db.version: %u\n", func, line,
db->version);
pr_debug("%s:%d: db.index_64: %u\n", func, line,
More information about the Linuxppc-dev
mailing list