The real problem was the core concept of isolating knowledge, i.e. Layer 2 doesn't know anything about layer 3. That's a flawed concept. The trivial, yet essential protocol ARP break the OSI model, for example. And then there's firewalls...
I think I've said this before on computer.rip, maybe not, but I've joked that "ICMP is original sin" as it's kind of the start of a whole set of consistency-breaking aspects of the IP stack - ARP is another one. I still think layers are a useful concept but yes, it's clear that believing in them too much will get you in trouble. In practice developers have seldom hesitated to violate the layer boundary if it's convenient.