#カーネルパッチ勉強会
Linuxに関する勘所を忘れないようにするため、Linuxカーネルのコミット内容を毎日読むことにしました。 #カーネルパッチ勉強会
2018-05-27 15:49:19UDFはDVDで使われるファイルシステムのことで、UnicodeからUTF-8に変換する処理でサロゲートペアをエラーにできていなかったバグ修正です。サロゲートペアというのは4バイトで一文字とする方式のことです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:53:13use-after-free bugというのは、メモリを解放した後に、そのメモリにアクセスすることで例外が起きるというバグのことです。ただし、無線LANドライバを取り外した時なので、通常は起きないはずですが、systemdだとありえるのかな。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:54:10ACPIビデオ検出処理で、BIOS定義でWin8以上であればLCDと判断していたのを、SMBIOSのシャーシ種別も参照して、「デスクトップ機かつWin8以上」という条件に修正しています。DELLのウルトラブックでの不具合を是正するパッチのようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:54:57この修正見て初めて知りましたが、glibcのprintfで%pは64bitアドレスが表示されますが、Linuxカーネルの%pはハッシュアドレス(上位32bitがゼロ)となり、本当の64bitアドレスを表示するには%pxを使う必要があります。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:55:49下記修正はAMDプロセッサの温度を取得する処理で、今年出たばかりのRyzen 7 2700Xに対応させています。ファイル名がk10temp.cとなっているのは、AMDのK10アーキテクチャが由来です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:56:38下記修正はsparc64向けのドライバのライセンスが誤ってGPLv3になっていたのが是正されています。LinuxカーネルはGPLv2で、ドライバもGPLv2にしたほうが望ましいとされています。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:57:08カーネルの高精度タイマー(hrtimer)で排他制御漏れによる競合状態(race condition)が発生して、expiresメンバーが意図せぬ変更がされてしまうという問題の修正です。発生頻度は低そうですが、いつ起きるか分からない怖さ。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:57:37関数内で途中リターンしていたことで、関数末尾の処理が行われないという、ありがちなバグの修正です。途中リターンがいいか悪いかという議論もありますが、__reload_late()に関しては「途中リターンしない」修正が適切でありそう。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 15:58:13GCC8の対応がカーネルに入っていて、もうGCC8が出たのかと思ったら、GW中にGCC8がリリースされていました。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:08:14Linuxカーネルのprintfでの%pはハッシュアドレスで、真のポインタアドレスにはならないので、%pxに修正されていますが、この手の問題箇所は他にもありそうです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:10:45Linuxをfreeze(ハイバネーションのこと)させた後のレジューム時、PCIコンフィグレーション空間が復元できていないため、PCIデバイスが正しく動作しなくなるという問題修正です。D0はデバイスの電源がオン、D3coldはオフ、D3hotはちょっとだけ電力が流れている状態です。 git.kernel.org/pub/scm/linux/… #タグ
2018-05-27 16:12:10Ceph(セフ)というのは初耳でしたが、分散ストレージソフトウェアのことで、Linuxカーネル2.6後期から取り込まれているようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:13:10スプリアス割り込み(spurious interrupts)というのは、ハードウェアから要因不明の割り込みが上がったことを表し、処理のしようがないのでdebug printして無視するしかありません。一般的にはハードウエアの故障を意味します。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:14:02デバイスドライバ(無線ラジオコントロールドライバ)を取り外す際、ヌルポでカーネルパニックするという問題が修正されています。ドライバの取り外しは非常に難しく、頭を抱えるところとして定番です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:15:05カーネル関数のstrncpy_from_user()は、ANSI Cのstrncpy()に似せた仕様のため、バッファフルだとNULL終端されないことに対する修正です。strncpyはベテランでも落とし穴にはまることがあります。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:15:42Sambaのディレクトリに対するfsyncをエラーにさせないようにする修正ですが、そもそもディレクトリにfsyncする必要あるのかと思いましたが、manページにきちんと書いてありますね。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:16:11NVMeのドライバにIntelの方が修正されています。NVMeというのはSATAではなくPCI ExpressでつなぐSSDのことです。NVMeは不揮発性メモリのPCI Expressという意味で、SSDより高速と謳われています。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:16:47Exynos4210ってなんだろう思ったら、サムスンがARM系プロセッサを製造販売していたんですね。知りませんでした。Linuxカーネルへのパッチは温度センサのバグ修正です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:19:17SO_BINDTODEVICEなんていうソケットオプションがあるんですね。ソケットとインターフェイスを結びつけることができます。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:19:48ボンディングドライバで受信ロードバランシング(RLB)の際、不正なMACアドレスを弾く修正です。ボンディングとチーミングは同義だと思っていたのですが、RHEL7にはそれぞれ機能が用意されているようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:20:15RTCデバイスの初期化中にデバイスファイルを有効化しているため、別コンテキストで割り込みが起こるとカーネルパニックするという問題の修正で、スタックトレースも含めて解説されていて大変わかりやすいです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-27 16:20:39goldfish RTCドライバにライセンスが付与されていなかった問題の修正です。goldfishというのはAndroidエミュレータ用の仮想RTCデバイスのことで、通常のサーバやPCには搭載されていないデバイスです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-28 17:07:56unsigned charの変数を24ビット左シフトすると、signed intとして扱われるので、それをそのままunsigned long(8バイト)に代入すると、上位4バイトがMSBで埋め尽くされるという問題修正ですが、C言語ベテランでもハマりそう。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会
2018-05-29 15:50:17