* Oops in do_mounts.c file.
@ 2002-01-04 20:57 ` Dan Aizenstros
0 siblings, 0 replies; 3+ messages in thread
From: Dan Aizenstros @ 2002-01-04 20:57 UTC (permalink / raw)
To: linux-mips
[-- Attachment #1: Type: text/plain, Size: 689 bytes --]
Hello all,
I am getting an oops in the mount_root function if I
pass root=/dev/nfs to my 2.5.1 kernel.
I am also getting an oops in the mount_block_root
function if I pass root=/dev/hda3 to my 2.5.1 kernel.
The problem appears to be related to the following two
lines in the init/do_mounts.c file:
static char * __initdata root_mount_data;
static char * __initdata root_fs_names;
The __initdata macro appears to be incorrectly used.
In include/linux/init.h the explanation for the macro
says the __initdata should appear after the variable
name. It also indicates that the variable shoud be
initialized.
The attached patch fixes the problem.
-- Dan A.
[-- Attachment #2: do_mounts.patch --]
[-- Type: application/octet-stream, Size: 658 bytes --]
Index: do_mounts.c
===================================================================
RCS file: /cvs/linux/init/do_mounts.c,v
retrieving revision 1.1
diff -u -r1.1 do_mounts.c
--- do_mounts.c 2001/12/19 00:04:01 1.1
+++ do_mounts.c 2002/01/04 22:02:20
@@ -239,14 +239,14 @@
__setup("root=", root_dev_setup);
-static char * __initdata root_mount_data;
+static char * root_mount_data __initdata = NULL;
static int __init root_data_setup(char *str)
{
root_mount_data = str;
return 1;
}
-static char * __initdata root_fs_names;
+static char * root_fs_names __initdata = NULL;
static int __init fs_names_setup(char *str)
{
root_fs_names = str;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Oops in do_mounts.c file.
@ 2002-01-04 20:57 ` Dan Aizenstros
0 siblings, 0 replies; 3+ messages in thread
From: Dan Aizenstros @ 2002-01-04 20:57 UTC (permalink / raw)
To: linux-mips
[-- Attachment #1: Type: text/plain, Size: 689 bytes --]
Hello all,
I am getting an oops in the mount_root function if I
pass root=/dev/nfs to my 2.5.1 kernel.
I am also getting an oops in the mount_block_root
function if I pass root=/dev/hda3 to my 2.5.1 kernel.
The problem appears to be related to the following two
lines in the init/do_mounts.c file:
static char * __initdata root_mount_data;
static char * __initdata root_fs_names;
The __initdata macro appears to be incorrectly used.
In include/linux/init.h the explanation for the macro
says the __initdata should appear after the variable
name. It also indicates that the variable shoud be
initialized.
The attached patch fixes the problem.
-- Dan A.
[-- Attachment #2: do_mounts.patch --]
[-- Type: application/octet-stream, Size: 658 bytes --]
Index: do_mounts.c
===================================================================
RCS file: /cvs/linux/init/do_mounts.c,v
retrieving revision 1.1
diff -u -r1.1 do_mounts.c
--- do_mounts.c 2001/12/19 00:04:01 1.1
+++ do_mounts.c 2002/01/04 22:02:20
@@ -239,14 +239,14 @@
__setup("root=", root_dev_setup);
-static char * __initdata root_mount_data;
+static char * root_mount_data __initdata = NULL;
static int __init root_data_setup(char *str)
{
root_mount_data = str;
return 1;
}
-static char * __initdata root_fs_names;
+static char * root_fs_names __initdata = NULL;
static int __init fs_names_setup(char *str)
{
root_fs_names = str;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Oops in do_mounts.c file.
2002-01-04 20:57 ` Dan Aizenstros
(?)
@ 2002-01-07 1:15 ` Ralf Baechle
-1 siblings, 0 replies; 3+ messages in thread
From: Ralf Baechle @ 2002-01-07 1:15 UTC (permalink / raw)
To: Dan Aizenstros; +Cc: linux-mips
On Fri, Jan 04, 2002 at 12:57:00PM -0800, Dan Aizenstros wrote:
> I am getting an oops in the mount_root function if I
> pass root=/dev/nfs to my 2.5.1 kernel.
>
> I am also getting an oops in the mount_block_root
> function if I pass root=/dev/hda3 to my 2.5.1 kernel.
>
> The problem appears to be related to the following two
> lines in the init/do_mounts.c file:
>
> static char * __initdata root_mount_data;
>
> static char * __initdata root_fs_names;
>
> The __initdata macro appears to be incorrectly used.
>
> In include/linux/init.h the explanation for the macro
> says the __initdata should appear after the variable
> name. It also indicates that the variable shoud be
> initialized.
Old gcc was more restrictive about the position of __attribute__() than
current gccs. The comment documents older gcc. Old in this context
means older than egcs 1.1.2 which is currently the required minmum version
to compile the kernel.
> The attached patch fixes the problem.
And that's highly suspect. No matter with or without your patch
root_mount_data and root_fs_names should endup in .data.init. So if your
patch indeed has an effect that your compiler seems is suspect.
Can you try to look at the generated assembler source and object files and
check into which sections gcc places these variables?
Ralf
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-01-07 2:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-01-04 20:57 Oops in do_mounts.c file Dan Aizenstros
2002-01-04 20:57 ` Dan Aizenstros
2002-01-07 1:15 ` Ralf Baechle
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.