Hi, While reading through the kernel source (2.4.13-pre2) I've found a few very minor things that I believe are not optimal, so I've created a patch to fix them. Here's a list of the files/functions that the patch changes and a small description of the change. Comments are very welcome. init/main.c : root_dev_setup() In the for() loop the counter "i" is compared to "sizeof root_device_name". "i" is declared as int (signed) and sizeof always returns an unsigned value, so I believe "i" should be declared unsigned. init/main.c : parse_options() The check that adds "line" to either "envp_init" or "argv_init" checks to see if the buffers are full and break;s the while() loop if _either_ buffer is full - it should use continue; so both buffers can get a chance to fill up. Robert M. Love should get credit for finding this one, I found it by looking at an old patch of his, and I just checked to see if it was still there and read the code to see if it was correct. kernel/exec_domain.c : Contrary to most other files in the kernel source the functions in exec_domain.c are defined with the return values on a line by themselves. Most places in kernel source have the entire function definition on a single line (as long as it does not exceed 80 chars in length). So I moved the function definitions onto a single line. kernel/exec_domain.c : get_exec_domain_list() The len variable (signed) is compared to PAGE_SIZE (unsigned). Changing len to "unsigned int" avoids comparison between signed and unsigned. It seems that there are tons of places throughout the kernel where signed and unsigned variables are compared. I won't mind going through the source and try to see where this can be avoided easily, but I'm not sure it it's worth the effort? The patch itself is attached as "2.4.13-pre2-misc.patch". Best regards, Jesper Juhl juhl@eisenstein.dk