Re: any chance of 2.6.0-test*?

Rob Wilkens
2003-01-12T19:28:07Z

Linus,

I'm REALLY opposed to the use of the word "goto" in any code where it's
not needed. OF course, I'm a linux kernel newbie, so I'm in no position
to comment

Let me comment below the relevant code snippet below as to how I would
change it:

On Sun, 2003-01-12 at 14:15, Linus Torvalds wrote:
> if (spin_trylock(&tty_lock.lock))
> goto got_lock;
> if (tsk == tty_lock.lock_owner) {
> WARN_ON(!tty_lock.lock_count);
> tty_lock.lock_count++;
> return flags;
> }
> spin_lock(&tty_lock.lock);
> got_lock:
> WARN_ON(tty_lock.lock_owner);
<etc...>

I would change it to something like the following (without testing the
code through a compiler or anything to see if it's valid):

if (!(spin_trylock(&tty_lock.lock))){
if (tsk ==tty_lock.lock_owner){
WRAN_ON(!tty_lock.lcok_count);
tty_lock.lock_count++;
return flags;
}
}
WARN_ON(tty_lock.lock_owner);
<etc...>

Am I wrong that the above would do the same thing without generating the
sphagetti code that a goto would give you. Gotos are BAD, very very
bad. Please note also that the two if statements above could probably
even be combined further into one statement by using a short circuit &&
in the if.

If I'm misinterpreting the original code, then forgive me.. I just saw
a goto and gasped. There's always a better option than goto.

-Rob