1

Linuxカーネルでの現在のマクロの動作について(ARMアーキテクチャを指しています)

現在のマクロのコード:

return (struct thread_info *)(sp & ~(THREAD_SIZE - 1));

これはstruct thread_info、スタック ? の一番上に配置されることを意味します。

これは、Linux カーネル開発の第 3 版からのものです。

struct thread_infoスタックの一番下 (成長するスタックの場合) とスタックの一番上 (成長するスタックの場合) に存在します。

struct thread_infoこれは上書きされることによってどのように防止されますか?

4

3 に答える 3

1

オーバーランから保護されません。

スタックが大きくなりすぎると (スタック オーバーフロー)、最初にオーバーランするのは `struct thread_info であり、すぐにさまざまな厄介な障害につながります。

そのため、カーネル コードを記述するときは、オーバーランを回避するために、使用するスタック スペースをできるだけ少なくしてください。

于 2013-10-14T09:15:50.953 に答える