FreeBSD に openssl の SA2017年12月12日 13時12分12秒

FreeBSD-SA-17:12.openssl が出されている。

エラーが出た後の処理を行わないで呼ばれた SSL_read や SSL_write は暗号化していないデータを書き出してしまうバグが修正された。影響は、利用側のプログラムの次第だが、プログラムに問題があった場合の回避策は無いとのこと。他に、もう一つのバグも共に修正されている。

対象は、現在サポートされている全てのリリースの、11.1-REELASE と 10.3-RELEASE と 10.4-RELEASE になる。

FreeBSD に openssl SA2017年12月02日 12時06分52秒

FreeBSD-SA-17:11.openssl が現在サポートされている全てのリリースに出されている。11 系の 11.0-RELEASE と 11.1-RELEASE、10 系の 10.3-RELEASE と 10.4-RELEASE が対象になる。

X.509 認証に一文字ずれの問題があり、バッファの内容が読まれる可能性があるそうだ。

x86_64 のみで起きる方のバグは 11 系のみが対象。

FreeBSD のオブジェクトファイルがアーキテクチャ毎に生成されるように2017年11月20日 16時18分31秒

比較的最近に、FreeBSD 12-CURRENT でのオブジェクトファイルの生成先が変更されていた様だ。今までは、/usr/obj/usr/src の直下となっていたが、そこから更にアーキテクチャ毎のディレクトリになるようだ。
/usr/obj/usr/src/i386.i386
差分コンパイルしていても、ディレクトリが変わってしまうため、古いファイルが大量に残る。10 GB しか割り当てていなかったため、rm をしていなかったら、ファイルシステムがいっぱいになってしまった。

FreeBSD の SA が三つ2017年11月16日 12時59分58秒

FreeBSD-SA-17:08.ptrace は、ptrace が未処理のデータを漏らす可能性があるバグ。対象は 10 系と、11 系の全て。

FreeBSD-SA-17:09.shm も同じく shm を通して IPC を行っている場合に、カーネル内のデータを漏らしてしまうバグだが、jail 越しの環境で起こる問題。こちらの対象は 10 系のみ。

カーネルメモリの漏洩バグが続くが、FreeBSD-SA-17:10.kldstat.asc も似たように kldstat が未初期化のデータを漏らす。こちらの対象は 10 系と、11 系の全て。

FreeBSD EN tzdata2017年11月03日 12時19分44秒

FreeBSD-EN-17:09.tzdata が出ている。夏時間の変更の時期が前回 FreeBSD がリリースされた時から、変わっているため新たに更新する必要があるとのこと。

対象の地域については言及されていないが、対象外の地域では問題ないとのこと。日本は夏時間の設定が無いので影響無し。影響がある地域の場合は cron や syslog の時刻がずれてしまう。

vm.swap_fragmentation sysctl が追加された2017年10月30日 12時55分41秒

11-STABLE に sysctl vm.swap_fragmentationが追加された。現在は、11.1-RELEASE が夏の終りに出されたばかり。次のリリースは 11.2-RELEASE なので、最初に使えるのはそこからになるだろう。

現在、二つのデバイスが割り当てられていて、利用量はゼロ。

% % sysctl vm.swap_fragmentation
vm.swap_fragmentation: 
Free space on device ada0s2b:
number of maximal free ranges: 1
largest free range: 262142
average maximal free range size: 262142
number of maximal free ranges of different sizes:
               count  |  size range
               -----  |  ----------
                   1  |  262142

Free space on device da0s2b:
number of maximal free ranges: 1
largest free range: 522610
average maximal free range size: 522610
number of maximal free ranges of different sizes:
               count  |  size range
               -----  |  ----------
                   1  |  522610
わざとスワップを使ってからの表示。
% sysctl vm.swap_fragmentation
vm.swap_fragmentation: 
Free space on device ada0s2b:
number of maximal free ranges: 11
largest free range: 232508
average maximal free range size: 22607
number of maximal free ranges of different sizes:
               count  |  size range
               -----  |  ----------
                   2  |  1
                   1  |  3 to 4
                   4  |  5 to 7
                   1  |  13 to 20
                   1  |  34 to 54
                   1  |  10946 to 17710
                   1  |  232508

Free space on device da0s2b:
number of maximal free ranges: 14
largest free range: 492884
averge maximal free range size: 36367
anumber of maximal free ranges of different sizes:
               count  |  size range
               -----  |  ----------
                   3  |  1
                   3  |  3 to 4
                   1  |  5 to 7
                   1  |  13 to 20
                   3  |  21 to 33
                   1  |  55 to 88
                   1  |  10946 to 17710
                   1  |  492884

WPA2 protocol の FreeBSD SA2017年10月18日 11時55分54秒

FreeBSD-SA-17:07.wpa が出されている。

現在のところ、修正が出されてたのは 11 系のみ。11-STABLE、11.1-RELEASE に 11.0-RELEASE。ports からも wpa_supplicant と hostapd も提供されているので、そちらに切替えて回避する事も出来るようだ。10 系への影響と対応は現在も調査中とのこと。

buildworld と buildkernel と書かれてはいるが、カーネルへの修正はバージョン番号を上げただけなので、カーネルは急ぐ必要はない。

dtrace で vm_thread_new の呼ばれる場所を探る2017年10月08日 11時02分38秒

11.1-RELEASE 後の 11-stable のコード。
$ dtrace -n 'fbt::vm_thread_new:entry{stack()}'
  0  55259              vm_thread_new:entry 
              kernel`thread_alloc+0x28
              kernel`sys_thr_new+0x67
              kernel`syscall+0xa4b
              kernel`0xc10a18fe

thread_alloc を見ると、thread_zone からメモリを割り当てているようだ。


struct thread*
thread_alloc(int pages)
{
...
    td = (struct thread *)uma_zalloc(thread_zone, M_WAITOK);

FreeBSD 11-stable で i386 のカーネルがコンパイルできない2017年10月07日 20時06分36秒

久しぶりに、FreeBSD の 11-STABLE を svn up したところ、コンパイルエラーが出てつまずいている。
/usr/src/sys/i386/i386/mpboot.s:128:2: error: symbol 'KERNBASE' can not be undef
ined in a subtraction expression
 movl ((IdlePTD)-KERNBASE), %eax
 ^
*** [mpboot.o] Error code 1

dtrace で特定の関数が呼ばれた時のコールスタックを取得2017年10月04日 21時04分47秒

スワップの実装に大きな変更があったのと、元からの興味により sys/vm/swappager.c を覗いている。

swp_pager_meta_build がいつ呼ばれるか興味があったので、久しぶりに dtrace を使ってみることにした。stack と言う関数がある。

# dtrace -n 'fbt::swp_pager_meta_build:entry{ stack() }'
dtrace: description 'fbt::swp_pager_meta_build:entry' matched 1 probe
dtrace: buffer size lowered to 6m


  0  20744       swp_pager_meta_build:entry
              kernel`swap_pager_putpages+0x266
              kernel`vm_pageout_cluster+0x4e4
              kernel`vm_pageout_laundry_worker+0x9c0
              kernel`fork_exit+0x6a
              kernel`0xc10a1b20

カーネル内では関数ポインタを設定して、あちこちに飛ぶことも多いので一部のコールスタックは、見た目程明らかではない。この出力は、11-STABLE で、11.1-RELEASE とは既にかなり異なっている。

しかし、若干これらの関数を覗いてみたところ、一部が抜けているように見える。これから、動作を探りながら dtrace の実験もしてみたい。