From memory, I thought there were
some rules about in-kernel compatibility.
For part of my career, to protect the company IP, we shipped binary blobs that got linked into the kernel with glue/abstraction layers that got recompiled at install time, and met Linux licence conditions. But the binary blobs had to make some assumptions about kernel struct layouts, in order to talk to the rest of the kernel. My memory is vague, but I thought there were rules about major/minor version number, that meant relevant struct layout compatibility could be assumed for all minor versions of the same major.
It sticks in my mind as, at least once, somebody in the kernel group broke one of the rules, altering a struct that should not have been altered. Caused a certain amount of unhappiness.
I'm sure other contributors with more detailed knowledge can clarify, or even dismiss all I have said.