From: Andrew Morton Davem said (in February!): Well, first of all the change in question is not in 2.4.x either. I just checked the current 2.4.x GIT tree and the test is exactly: if (ic_myaddr == INADDR_NONE || #ifdef CONFIG_ROOT_NFS (MAJOR(ROOT_DEV) == UNNAMED_MAJOR && root_server_addr == INADDR_NONE && ic_servaddr == INADDR_NONE) || #endif ic_first_dev->next) { which matches 2.6.x I even checked 2.4.x when it was branched for 2.5.x and the test was the same at the point in time too. Looking at the proposed change a bit it appears that it is probably correct, as it's trying to check that ROOT_DEV is nfs root. But if it is correct then the UNNAMED_MAJOR comparison in the same code block should be removed as it becomes superfluous. I'm happy to apply this patch with that modification made. Cc: "David S. Miller" Cc: Joakim Tjernlund Cc: Trond Myklebust Signed-off-by: Andrew Morton --- net/ipv4/ipconfig.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN net/ipv4/ipconfig.c~ip_auto_config-fix-fix net/ipv4/ipconfig.c --- a/net/ipv4/ipconfig.c~ip_auto_config-fix-fix +++ a/net/ipv4/ipconfig.c @@ -1281,8 +1281,7 @@ static int __init ip_auto_config(void) */ if (ic_myaddr == NONE || #ifdef CONFIG_ROOT_NFS - (MAJOR(ROOT_DEV) == UNNAMED_MAJOR - && root_server_addr == NONE + (root_server_addr == NONE && ic_servaddr == NONE && ROOT_DEV == Root_NFS) || #endif _