Linux再起動システムコールでの「マジックパラメータ」の用途は何ですか?

Linux再起動システムコールでの「マジックパラメータ」の用途は何ですか?

Linuxのソースコード、特にシステムコールコードを読んだときに実装がsys_reboot見つかりました。http://lxr.free-electrons.com/source/kernel/reboot.c#L199

199 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
200                 void __user *, arg)
201 {
202        ...
...    
286 }

途中で特定のコードスニペットがあります。

209 
210         /* For safety, we require "magic" arguments. */
211         if (magic1 != LINUX_REBOOT_MAGIC1 ||
212                         (magic2 != LINUX_REBOOT_MAGIC2 &&
213                         magic2 != LINUX_REBOOT_MAGIC2A &&
214                         magic2 != LINUX_REBOOT_MAGIC2B &&
215                         magic2 != LINUX_REBOOT_MAGIC2C))
216                 return -EINVAL;

実際にどのような「セキュリティ」を提供しているのだろうか。私の言葉は、これが虐待を防ぐためですか?この場合、パラメータは公開されているため、すべてのライブラリまたはアプリケーションがパラメータを渡す必要がある場合でも、システムコールを乱用する可能性があります。私が逃したものは何ですか?

ベストアンサー1

この質問は、このスーパーユーザーの質問から回答されました。

デフォルトでは、アドレスを少し変更すると、プログラムが実際に呼び出されたときにシステムコールを呼び出すと考えることができますreboot()。これは非常に破壊的な非同期操作であるため、reboot()システム状態を削除して、プログラムのバグやパニックにさらされる可能性があるビットフリップ問題の証拠を削除します。 Linux では、これに正常に追加の保護が提供されます。

興味深いことに、2番目の魔法の数字セットは、Linusと彼の3人の娘の誕生日に対応しています。

おすすめ記事