Re: oom() _still_ killing init

Andrea Arcangeli (andrea@suse.de)
Thu, 17 Jun 1999 21:52:30 +0200 (CEST)


On Thu, 17 Jun 1999, Oliver Xymoron wrote:

>> void oom(struct task_struct * task)
>> {
>> + if (task->pid == 1)
>> + goto out;
>> printk("\nOut of memory for %s.\n", task->comm);
>> force_sig(SIGKILL, task);
>> + out:
>> }
>
>You're kidding. Tell me you're joking, please. This is the most
>superfluous use of a goto I've ever seen. There are good reasons not to
>use gotos, such as readability, maintainability, reliability, and the
>like. While performance may take precedence in schedule (at least until we
>make the compiler smarter), the same is certainly not true here.

Agreed, we could place there an mdelay(1000) and nobody would ever
complain :).

I may also have used a:

if (task->pid != 1)
{
send_sig
}

and that would have preserved the fast path too in every sane compiler.

Unfortunately I like very much using goto in cases like the above one but
since most of people dislike them I'll continue avoid using `goto' (when
not needed) the next times. (thanks for reminding me that)

>I haven't looked at the patch you want me to apply this over (I need to

Please try out 2.2.10_andrea-VM6.gz (you should have the URL for it).

Andrea Arcangeli

-
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.tux.org/lkml/