[Android Q&A, Help & Troubleshooting] bitbang3r:
Is it a criminal offense? No.

Is it something they could conceivably be sued for? Maybe, but unlikely. Most companies do technically meet the letter of the GPL, even if they abusively stomp all over its intent. Strictly speaking, GPL2 and Apache licenses require the release of source, but impose no duty to ensure that it's nice and buildable. HTC is in murkier water, because they compile their kernels as monolithic binary blobs, then just rip out the source to anything proprietary (which IS a clear GPL violation, and half the reason why loadable kernel modules were invented to begin with).

As far as HTC goes, their behavior is pretty much a blatant violation... but that still doesn't mean it would be an easy lawsuit. In order to sue for a GPL violation, you have to have "standing". In the US, that means you're one of the copyright holders (as in, Linus has committed code you personally wrote into the kernel) AND you can demonstrate to the court that you have personally suffered real harm that can be quantified in dollars.

Put another way, the GPL is a form of contract. In the US, you can't sue somebody just because they breached a term of a contract. You have to show that their breach somehow caused real harm and had real consequences that made you lose money.

In theory, somebody with standing to sue for breach of the GPL2 with regard to the Linux kernel could seek equitable relief in the form of an injunction, but equitable relief is viewed by courts as an extraordinary action. As a practical matter, unless you had Linus Torvalds standing behind you, your likelihood of getting anywhere with this approach would be low. And Linus wouldn't stand behind you, because he's not interested in spending his time fighting technical GPL violations.

The truth is, lack of source (for things the GPL compels release of source) is usually the least of our problems. Proprietary binary loadable kernel modules that break with every new kernel (because Linux doesn't have a stable ABI), and TIVO-ized phones with locked bootloaders that make possession of the source almost completely moot (*cough* just about every Motorola phone, ever *cough*) are the real problem.

The LKM problem is unlikely to be solved by Linus, because it's only a serious problem for Android. IMHO, a project to come up with binary wrappers that could be easily recompiled for new kernels to allow modules built for older kernels to work with new ones would be a massively worthwhile project for XDA that would mitigate, if not solve, the first problem.

The bootloader and locked-hardware problem is pretty much insurmountable absent government regulation that's unlikely to be favorable for us anyway. Android was released under GPL2 and Apache, neither of which prohibit the practice. GPL3 prohibits it, but it would be almost impossible to virally infect Android with it. If new GPL3-only code became part of the Linux kernel, there are now enough Android devices that manufacturers would just branch off with the last GPL2 code, quit calling it "Linux", and go their own way. As a practical matter, this (almost) happened anyway, and you could argue about whether we're in a de-facto state of it now. Officially, though, nobody wants to see an official schism between Android and Linux.

At the end of the day, Linus Torvalds hates political conflict, and just doesn't get worked up over licensing issues. He's not going to bend over backwards to accommodate Android, but he'll never draw a line in the sand and dare Android to cross it (the way Stallman would). He's said, in so many words, that he's content to leave Google in charge as Android's neighborhood watchman/kernel cop. He doesn't agree with everything Google does, but his disagreements aren't big enough to motivate him to put the rest of his life on hold and fight over.