cyan's blog

しょーもない事しか書いていません

2023-01-01から1年間の記事一覧

x86におけるセグメンテーションについてのメモ

書かないと忘れるので... 概要 16-bitマシンであった8086では20-bitのデータバスを利用するために各種セグメントレジスタの値を16bit left shiftした値+オフセットをリニアアドレスとして使用していた.*1全てのx86アーキテクチャCPUは今でも16bitリアルモー…

KVM_SET_USER_MEMORY_REGION in Linux x86 part1

Linux(tag v5.4)におけるVM ioctl KVM_SET_USER_MEMORY_REGIONリクエストの処理の流れについてのメモ.読んだ順に書いているだけなのでまとまっていない. 前提 kvmを利用したいアプリケーションはkvm APIを利用することでVMを管理するための諸構造,vCPUな…

array_index_nospec in Linux x86

Linux(tag v5.4)のソースコードリーディングをしていたときに面白いと思ったマクロのメモ. array_index_nospec include/linux/nospec.hで以下のように定義される. /* * array_index_nospec - sanitize an array index after a bounds check * * For a code…

__chk_range_not_ok() in Linux x86

Linux(tag v5.4)のソースコードリーディングをしていたときに面白いと思った関数のメモ. __chk_range_not_ok() arch/x86/include/asm/uaccess.hにて以下のように定義される. static inline bool __chk_range_not_ok(unsigned long addr, unsigned long siz…