Hi,

in the file "/kernel/src/arch/x86/x32/tss.h".

The definition of the "io_bitmap" member seems to be wrong for me:

u8_t io_bitmap[IOPERMBITMAP_SIZE+1] X86_X32_IOPERMBITMAP_ALIGNMENT;

I suppose the next member named "stopper" is necessary to avoid the processor to generate an exception when dealing with the last byte of the io bitmap array, like said in the Intel documentation. In that case, adding one byte is not necessary and lead to a problem: the "init_io_space()" function only fill 'IOPERMBITMAP_SIZE' bytes. So, there is a byte that has an undefined contents between the "io_bitmap" array and the "stopper" byte.

Why do you use an alignment restriction ? I didn't see it in the Intel documentation.

Willy.


Reply via email to