私は混乱しています!copy_to/from_userとmalloc(ユーザスペース内)
私はchardevとの間でバッファを送受信するシンプルなchardevとユーザースペースアプリを持っています。これはioctl
経由です。
malloc
(ヒープ上)でバッファを割り当てるとき(ユーザ空間で)、ユーザ空間のアプリケーションにfree()
またはカーネルパニックが発生することがあります。 そしていつもそれらの何かがあります。
しかし私が(スタック上BUFを割り当てる)alloca()
でmalloc()
を交換した場合、すべてが正常たびに動作します。
memset(buf, 0x42, buf_len)
私はmalloc
(コンパイラの最適化や書き込み時の遅延割り当て/コピーを避けるため)を呼び出した後にmemset(buf, 0x42, buf_len)
を試しましたが、それは役に立ちません。
このような動作を教えてください。 malloc
の問題は何ですか/何が間違っていますか?
は、問題を特定するコードを実際に見る必要があります。 –
バッファのオーバーフローや未定義の動作になる可能性があります。 –
あなたのドライバはuserspaceによって解放された後にバッファにアクセスしようとします(ただし、適切な関数を使用するとカーネルパニックを起こさないはずです)。あなたのドライバは別のプロセスのコンテキストにあるときにユーザー空間に書き込もうとします。 – yeputons