萌えハッカーニュースリーダー

2025/09/25 21:16 The phaseout of the mmap() file operation in Linux

出典: https://lwn.net/SubscriberLink/1038715/e4a2f8f50c244545/
hakase
博士

やっほー、ロボ子!今日のITニュースは、Linuxカーネルの`mmap()`廃止の動きについてじゃ。

roboko
ロボ子

博士、こんにちは。`mmap()`の廃止ですか?それは一体どういうことでしょう?

hakase
博士

`mmap()`は、ファイル記述子を通してオブジェクトをアドレス空間にマップする機能のことじゃ。でも、これVMA(`vm_area_struct`)への直接アクセスをドライバに許してしまうから、メモリ管理上の問題を引き起こす可能性があるのじゃ。

roboko
ロボ子

なるほど、セキュリティ上のリスクがあるということですね。記事によると、`file_operations`構造体は1992年3月に導入されたとのことですが、かなり古い技術なのですね。

hakase
博士

そうじゃな。そこで、`mmap()`を置き換えるために、6.17で`mmap_prepare()`コールバックが導入されたのじゃ。これはVMAが設定される前に呼び出されて、ドライバに必要な情報を提供するものじゃ。

roboko
ロボ子

`mmap_prepare()`ですか。VMAの設定前に必要な情報を渡すことで、安全性を高めるのですね。

hakase
博士

その通り!さらに、`vm_area_desc`構造体を使って、ドライバがマッピングを設定するために必要な情報を提供するのじゃ。

roboko
ロボ子

`vm_area_desc`構造体、了解しました。記事には、Lorenzo Stoakesさんが`mmap_prepare()`の機能を拡張しているとありますね。

hakase
博士

そうじゃ、`mmap_action`構造体が`vm_area_desc`に追加されて、VMAが設定された後に実行されるアクションを定義できるようになったのじゃ。`MMAP_NOTHING`、`MMAP_REMAP_PFN`、`MMAP_IO_REMAP_PFN`などのアクションタイプがあるぞ。

roboko
ロボ子

`mmap_action`構造体ですか。アクションの成功時と失敗時に呼び出される`success_hook()`と`error_hook()`コールバックもあるのですね。より柔軟な対応が可能になるということでしょうか。

hakase
博士

その通り!エラー処理も考慮されているのは素晴らしいのじゃ。でも、このパッチシリーズが6.18のmerge windowに間に合うかはまだわからないみたいじゃな。

roboko
ロボ子

そうなんですね。`mmap()`の実装を変換するには時間がかかる見込みとのことですから、気長に待つ必要がありそうですね。完了予定は2025年9月25日とのことです。

hakase
博士

ふむ、2025年か。意外と先の話じゃな。でも、着実に進んでいるのは良いことじゃ。しかし、`mmap`がなくなると、昔のコードが動かなくなる可能性もあるから、注意が必要じゃな。

roboko
ロボ子

互換性の問題ですね。移行期間中は、新旧両方のAPIをサポートする必要があるかもしれませんね。

hakase
博士

その通りじゃ。移行は大変じゃけど、より安全なシステムのためには必要なことじゃ。ところでロボ子、`mmap`って、まるで宝の地図みたいじゃと思わないか?

roboko
ロボ子

宝の地図、ですか?

hakase
博士

だって、アドレス空間という名の海に眠る宝(データ)への道しるべじゃからな!でも、`mmap`廃止は、その地図が書き換えられるようなもの。新しい地図(API)を使いこなして、安全な航海(システム運用)を目指すのじゃ!

roboko
ロボ子

なるほど、面白い例えですね!でも、新しい地図には、海賊(ハッカー)がいない安全な海域しか描かれていない、ということでしょうか。

hakase
博士

そういうことじゃ!…って、ロボ子もなかなか上手いこと言うのじゃな。まるで、私が作ったジョークAIみたいじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search