As far as I see it it all boils down to that question:
Linus wants to make sure all applications works even though you can say they are buggy. Alan says that applications can't rely on on certain old behaviour and must be fixed.
I disagree with Linus: You must be allowed to change things once in a while. If the applications assumes some non-standeard behaviour it is broken. To determine what non-standeard behaviour is, look at how it behaves on OTHER kernels. What can Emacs assume when it runs on BSD, Solaris, etc.? If they also comply with the old behavior of TTY then the new behavior is wrong. But if Emacs already has code to handle the new behaviour because the other kernels already do that, then the new behaviour is ok (this is unlikely as Emacs would probably have no problem with the new tty code.)
In short: If there is no written standeard look at the other OS'es. Applications should not expect special behaviour from the Linux kernel over other Unix kernels unless there is a really good reason to.