But yeah, almost all of the tricky bugfixes I did (not in kernel, but it seems universal in complex software) were absolutely trivial code changes (like "swap two lines of code" trivial). Reproducing the problem, tracing the exact sequence of events leading to the symptoms, finding mismatch of expectations between two components – that's where the real work was.
Like in that old joke: "hitting machine with a hammer $0.01; knowing where to hit it $99.99"