From: Andrew Morton <akpm@osdl.org>
To: Pragnesh Sampat <pragnesh.sampat@timesys.com>
Cc: bos@serpentine.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sprintf modifiers in usr/gen_init_cpio.c
Date: Tue, 17 Feb 2004 16:44:27 -0800 [thread overview]
Message-ID: <20040217164427.027b5643.akpm@osdl.org> (raw)
In-Reply-To: <1077063980.9721.22.camel@dagoban.timesys>
Pragnesh Sampat <pragnesh.sampat@timesys.com> wrote:
>
> The file initramfs_data.cpio is slightly different when generated on
> cygwin, compared to linux, which causes the kernel to panic with the
> message "no cpio magic" (See Documentation/early-userspace/README).
>
> The problem in cpio generation is due to the difference in sprintf
> modifiers on cygwin. The code uses "%08ZX" for strlen of a device
> node. printf man pages discourages "Z" and has 'z' instead.
> Both of these are not available on cygwin sprintf (at least some
> versions of cygwin). The net result of all of this is that the
> generated file literally contains "ZX" and then the strlen after that
> and messes up that 110 offset etc. The file is 516 bytes long on the
> system that I tested and on linux it is 512 bytes.
>
> The fix below just uses "%08X" for that field. Any basic portable
> modifier should be ok, I think.
ugh, OK.
We'll also need to cast the return value of strlen to the correct type. On
ppc64 (at least) size_t is 8 bytes and the printf will otherwise grab the wrong
things off the stack.
diff -puN usr/gen_init_cpio.c~cygwin-cpio-fix usr/gen_init_cpio.c
--- 25/usr/gen_init_cpio.c~cygwin-cpio-fix Tue Feb 17 16:42:36 2004
+++ 25-akpm/usr/gen_init_cpio.c Tue Feb 17 16:43:49 2004
@@ -56,7 +56,7 @@ static void cpio_trailer(void)
const char name[] = "TRAILER!!!";
sprintf(s, "%s%08X%08X%08lX%08lX%08X%08lX"
- "%08X%08X%08X%08X%08X%08ZX%08X",
+ "%08X%08X%08X%08X%08X%08X%08X",
"070701", /* magic */
0, /* ino */
0, /* mode */
@@ -69,7 +69,7 @@ static void cpio_trailer(void)
0, /* minor */
0, /* rmajor */
0, /* rminor */
- strlen(name) + 1, /* namesize */
+ (unsigned)strlen(name) + 1, /* namesize */
0); /* chksum */
push_hdr(s);
push_rest(name);
@@ -87,7 +87,7 @@ static void cpio_mkdir(const char *name,
time_t mtime = time(NULL);
sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
- "%08X%08X%08X%08X%08X%08ZX%08X",
+ "%08X%08X%08X%08X%08X%08X%08X",
"070701", /* magic */
ino++, /* ino */
S_IFDIR | mode, /* mode */
@@ -100,7 +100,7 @@ static void cpio_mkdir(const char *name,
1, /* minor */
0, /* rmajor */
0, /* rminor */
- strlen(name) + 1, /* namesize */
+ (unsigned)strlen(name) + 1,/* namesize */
0); /* chksum */
push_hdr(s);
push_rest(name);
@@ -119,7 +119,7 @@ static void cpio_mknod(const char *name,
mode |= S_IFCHR;
sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
- "%08X%08X%08X%08X%08X%08ZX%08X",
+ "%08X%08X%08X%08X%08X%08X%08X",
"070701", /* magic */
ino++, /* ino */
mode, /* mode */
@@ -132,7 +132,7 @@ static void cpio_mknod(const char *name,
1, /* minor */
maj, /* rmajor */
min, /* rminor */
- strlen(name) + 1, /* namesize */
+ (unsigned)strlen(name) + 1,/* namesize */
0); /* chksum */
push_hdr(s);
push_rest(name);
@@ -176,7 +176,7 @@ void cpio_mkfile(const char *filename, c
}
sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
- "%08X%08X%08X%08X%08X%08ZX%08X",
+ "%08X%08X%08X%08X%08X%08X%08X",
"070701", /* magic */
ino++, /* ino */
mode, /* mode */
@@ -189,7 +189,7 @@ void cpio_mkfile(const char *filename, c
1, /* minor */
0, /* rmajor */
0, /* rminor */
- strlen(location) + 1, /* namesize */
+ (unsigned)strlen(location) + 1,/* namesize */
0); /* chksum */
push_hdr(s);
push_string(location);
_
next prev parent reply other threads:[~2004-02-18 0:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-18 0:26 Pragnesh Sampat
2004-02-18 0:44 ` Andrew Morton [this message]
2004-02-18 4:05 ` Pragnesh Sampat
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040217164427.027b5643.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=bos@serpentine.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pragnesh.sampat@timesys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®