5
Linuxカーネルでは、プロセスのメモリ領域を格納するために、Linuxはリンクリストと赤黒のツリーの両方を使用します。 find_vmaは、渡されたアドレスよりもvm_endフィールドが赤色の黒色のツリーを介している第1のメモリ領域を特定する機能である。しかし、find_vma()内の赤い黒いツリーの保護(ロックのような)がないことがわかります。別のスレッドがrb_erase関数を呼び出すと、同じツリー上のいくつかの要素が削除されますか?は保護されていないカーネルの赤い黒いツリーですか?
RCUで管理していませんか? – Joe
'find_vma'自体は、同時アクセス(変更)からいくらか保護して呼び出されるべきです。 @ジョー:リストとは異なり、rb-treeはRCUで保護することはできません。 – Tsyvarev
@Tsyvarevご返信ありがとうございます。仰るとおりです。たとえば、[sys_msync](http://lxr.free-electrons.com/source/mm/filemap.c?v=2.4.37#L2381)( 'msync'のシステムコール)では、' down_read (&current-> mm-> mmap_sem) 'を探し、次に' find_vma'を実行します。赤い黒い木を保護していますか? – HuangJie