FS поступает из реестра дополнительного сегмента с именем FS на архитектуре 386 (конец второго абзаца).
Я предполагаю, что после DS для сегмента данных и ES для дополнительного сегмента Intel просто пошел на следующие символы в алфавите (FS, GS). Вы можете увидеть реестр 386 на странице Wiki , на графике на правой стороне.
Из источника ядра Linux на моей системе Mint Mint Linux ( ARCH / X86 / включают / ASM / UACCESS.H
):
/*
* The fs value determines whether argument validity checking should be
* performed or not. If get_fs() == USER_DS, checking is performed, with
* get_fs() == KERNEL_DS, checking is bypassed.
*
* For historical reasons, these macros are grossly misnamed.
*/
#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
#define KERNEL_DS MAKE_MM_SEG(-1UL)
#define USER_DS MAKE_MM_SEG(TASK_SIZE_MAX)
#define get_ds() (KERNEL_DS)
#define get_fs() (current_thread_info()->addr_limit)
#define set_fs(x) (current_thread_info()->addr_limit = (x))
Похоже, что проблема была вызвана резервированием DHCP. Я не совсем уверен, почему, поскольку MAC-адреса одинаковы в обоих ботинках и IP были зарезервированы на MAC-адрес. Вероятно, это "я тот же, но я другой" сбило маршрутизатор с толку.
Решение (не очень хорошее, поскольку теперь невозможно арендовать тот же IP точно) заключалось в удалении резервирования DHCP и перезагрузке маршрутизатора, чтобы аренда была удалена. Возможно, установка короткого времени истечения срока аренды могла бы решить проблему несколько лучше.