[patch] IP autoconfiguration checks slightly broken

Erik Walthinsen (omega@cse.ogi.edu)
Wed, 26 Aug 1998 11:52:29 -0700 (PDT)


I'm building a machine that uses an initrd to create a larger ramdisk for
the root filesystem, load it, then continue booting. (Yes, I know it's
volatile, we'll be getting Coda running soon)

Anyway, I noticed that if you're not very careful with the kernel config
parameters, you end up in a situation where the root device is *not*
/dev/nfs, yet the IP autoconfiguration still fails because it's configured
into the kernel, and there is no nfsaddrs= parameter, only ip=. So, this
is a quick hack (very probably somewhat incorrect) that 'fixes' the check.
I grabbed the check for the nfsroot stuff from fs/nfs/nfsroot.c I believe,
but it looks very iffy for this purpose.

Implied FIXME: the check for an NFS ROOT_DEV is very very very suspect.

<drumroll>Presenting....</drumroll>
Omega's first kernel patch! <clapping cheering=unlikely>

*** linux-2.1.115/net/ipv4/ipconfig.c Sun Jul 26 23:35:57 1998
--- linux-2.1.115.omega/net/ipv4/ipconfig.c Mon Aug 24 15:29:45 1998
***************
*** 1037,1043 ****
*/
if (ic_myaddr == INADDR_NONE ||
#ifdef CONFIG_ROOT_NFS
! root_server_addr == INADDR_NONE ||
#endif
(ic_first_dev && ic_first_dev->next)) {
#ifdef CONFIG_IP_PNP_DYNAMIC
--- 1037,1044 ----
*/
if (ic_myaddr == INADDR_NONE ||
#ifdef CONFIG_ROOT_NFS
! ((MAJOR(ROOT_DEV) == UNNAMED_MAJOR) && /* root on nfs */
! root_server_addr == INADDR_NONE) || /* no root server */
#endif
(ic_first_dev && ic_first_dev->next)) {
#ifdef CONFIG_IP_PNP_DYNAMIC

Erik Walthinsen <omega@cse.ogi.edu> - Staff Programmer @ OGI
Quasar project - http://www.cse.ogi.edu/DISC/projects/quasar/
__
/ \ SEUL: Simple End-User Linux - http://www.seul.org/
| | M E G A Helping Linux become THE choice
_\ /_ for the home or office user

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html