As I was trying to do some patching on Ubuntu's kernel I've found out kernel.org's patches cannot be merged correctly with the kernel source. I'm wondering if distributions like Ubuntu have their own kernels different from official ones?
Another thing that I think could be related to this question is the name of the directory of source tree in Ubuntu that is linux-headers-2.6.31-21. What does that 21 stand for? Also there is a directory named linux-headers-2.6.31-21-generic. What's the difference between these two?