Quality problems with code at this magnitude aren't really a technical problem (i.e. not something you can fix by asking the same programmers who created the problems to fix them.) It's rare that good programmers could write code as badly as these patches demonstrate. Even actively-harmful coding standards directed from the top down wouldn't cause this kind of code.
Instead, the kind of code that ends up in these driver blobs is caused by, in essence, a political problem: they simply hired bad programmers. The only way to fix that, is to demand that the driver vendors' management teams adopt higher standards for their software hires: that they fire many of the programmers they have, and hire new ones in a much more stringent process. And probably also pay them more, because that stringent process will likely choke their existing funnel out of existence.
It's much the same as, say, finding that a company is using a low-quality outsourcing firm. Would you say that there's a technical problem inside the outsourcing firm? No, you'd say that there's a management problem in the choice of outsourcing firm.