1. ホーム
  2. c

linux __userマクロの意味するところは?

2023-09-19 18:23:17

質問

私は、誰かが Linux カーネル ソースで使用されている __user マクロのニュアンスを説明してくれることを期待していました。

まず最初に、マクロを

# define __user         __attribute__((noderef, address_space(1)))

さて、いくつかググってみたところ、このマクロはポインタをユーザアドレス空間に属するものとして指定することができ、それは再参照されるべきではない、ということがわかりました。

私はいくつかの明白な事実を見逃しているかもしれませんが、どなたかそのようなマクロの意味を説明していただけませんか。たとえば、このマクロが使用される良い例とはどのようなものでしょうか。繰り返しになりますが、私が何か明白なことを見逃しているのであれば、私を許してください。

いくつかの文脈でこれを置くために、私はいくつかの USB コード (linux/usbdevice_fs.h) を調べているときにこのマクロに出会いました。私は、カーネル内でこのマクロ (またはそのような他のもの) を使用することの一般的な理解を求めているだけです。

見てくださってありがとうございます!

どのように解決するのですか?

以下のようなツールを使用できます。 スパース のようなツールが、信頼できないポインタ (または現在の仮想アドレスマッピングでは無効かもしれないポインタ) を不適切に使用している可能性があることをカーネル開発者に伝えることを可能にします。