That is fine. The problem is redhat is allegedly making business agreements with their customers requiring no redistribution of the code. This is a direct violation of the GPL by denying one of the freedoms it guarantees.
Isn't Red Hat's position, "You have the freedom to redistribute this code but if you do so, we will sever our relationship with you as a customer of ours, so you won't get any more code." Which might go against the intentions of the GPL but not its actual wording.
I'm sure their lawyers have though out a good defense but it very much does sound like an additional restriction placed on the right to distribute the source. Hopefully Red-Hat will be proven wrong before more companies jump on this.
but how does red hat structure their stuff? I know that gnu projects must surrender their copyright to gnu, in order to prevent future shenanigans. if red hat had their core infrastructure (package manager, package definitions, etc.) copyrighted to red hat, then they can change the license on future releases of red hat to make it restrictive. you're then free to release a gpl source of the packaged code and the red hat specific modifications, since they fall under gpl, but you can't release the scaffolding anymore that make up the rest of the red hat system. I'm not a lawyer, but I've seen this kind of trick pulled on gpl projects before, where version 2 is now bsd/proprietary, while gpl version 1 remains in public access.
(edit: I'm reading the rest of the thread, and it seems there's some confusion about what exactly is in the new red hat contracts.)
Only one historical exception: Cygwin, basically inertia from the Cygnus acquisition.
Maybe more significantly, Red Hat has only made limited use of CLAs in the past and hasn't used any CLAs for many years now. It's basically corporate policy.
There was one other Cygnus-era one... libgcj, the gcj runtime library. However, Red Hat assigned copyright to the FSF in exchange for them adopting a more permissive license for the GNU Classpath project; one that was eventually selected by Sun when they open-sourced Java.