From what I can understand of the latest Intel manual, this is normal: "When the CPL is 0, data segments at all privillege levels are accessible" - section 6.6 of the Intel Software Developer Manuals Volume 3 (2025)
All of this causes me to question: in a flat memory model, are seperate data segments truly needed for both ring0 and ring3? Is the processor actually checking or using the privillege level of these segment descriptors at any point?
I understand that for thread-local storage etc it's useful to save and reload FS or GS - but appart from that, is loading ring0 data segment selectors into the relevant registers actually doing anything useful?
Thanks for your help
