LKM コンパイル処理中に set_fs 関数の uaccess.h ヘッダー ファイルが正しくありません。

LKM コンパイル処理中に set_fs 関数の uaccess.h ヘッダー ファイルが正しくありません。

Linuxカーネルモジュールをコンパイルしようとしていますが、gccを使用してコンパイル中に次のエラーが発生します。

./arch/x86/include/asm/uaccess.h: In function ‘set_fs’:
./arch/x86/include/asm/uaccess.h:32:29: error: incompatible types when assigning to type ‘mm_segment_t {aka struct <anonymous>}’ from type ‘struct mm_segment_t *’
  current->thread.addr_limit = fs;

LKM自体には何の問題もありません。insmode他のLinuxシステムで正常にコンパイルできるためです。

詳細は次のとおりです。

LKMで使用されるヘッダーファイル:asm / uaccess.hオペレーティングシステムの詳細:Linux server 4.15.0-128-generic Ubuntu

ファイル生成:

obj-m += LKM.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean

ベストアンサー1

アーキテクチャがx86であることを確認してください。使用中で#include <asm/uaccess.h>あれば#include <linux/uaccess.h>

おすすめ記事