#カーネルパッチ勉強会

Linuxカーネルパッチについて、ゆたかさんによる一言解説をまとめているものです。 https://twitter.com/yutakakn > Linuxに関する勘所を忘れないようにするため、Linuxカーネルのコミット内容を毎日読むことにしました。
21
平田豊@フォロバ100 @yutakakn

Linuxに関する勘所を忘れないようにするため、Linuxカーネルのコミット内容を毎日読むことにしました。 #カーネルパッチ勉強会

2018-05-27 15:49:19
平田豊@フォロバ100 @yutakakn

UDFはDVDで使われるファイルシステムのことで、UnicodeからUTF-8に変換する処理でサロゲートペアをエラーにできていなかったバグ修正です。サロゲートペアというのは4バイトで一文字とする方式のことです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:53:13
平田豊@フォロバ100 @yutakakn

use-after-free bugというのは、メモリを解放した後に、そのメモリにアクセスすることで例外が起きるというバグのことです。ただし、無線LANドライバを取り外した時なので、通常は起きないはずですが、systemdだとありえるのかな。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:54:10
平田豊@フォロバ100 @yutakakn

ACPIビデオ検出処理で、BIOS定義でWin8以上であればLCDと判断していたのを、SMBIOSのシャーシ種別も参照して、「デスクトップ機かつWin8以上」という条件に修正しています。DELLのウルトラブックでの不具合を是正するパッチのようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:54:57
平田豊@フォロバ100 @yutakakn

この修正見て初めて知りましたが、glibcのprintfで%pは64bitアドレスが表示されますが、Linuxカーネルの%pはハッシュアドレス(上位32bitがゼロ)となり、本当の64bitアドレスを表示するには%pxを使う必要があります。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:55:49
平田豊@フォロバ100 @yutakakn

下記修正はAMDプロセッサの温度を取得する処理で、今年出たばかりのRyzen 7 2700Xに対応させています。ファイル名がk10temp.cとなっているのは、AMDのK10アーキテクチャが由来です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:56:38
平田豊@フォロバ100 @yutakakn

下記修正はsparc64向けのドライバのライセンスが誤ってGPLv3になっていたのが是正されています。LinuxカーネルはGPLv2で、ドライバもGPLv2にしたほうが望ましいとされています。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:57:08
平田豊@フォロバ100 @yutakakn

カーネルの高精度タイマー(hrtimer)で排他制御漏れによる競合状態(race condition)が発生して、expiresメンバーが意図せぬ変更がされてしまうという問題の修正です。発生頻度は低そうですが、いつ起きるか分からない怖さ。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:57:37
平田豊@フォロバ100 @yutakakn

関数内で途中リターンしていたことで、関数末尾の処理が行われないという、ありがちなバグの修正です。途中リターンがいいか悪いかという議論もありますが、__reload_late()に関しては「途中リターンしない」修正が適切でありそう。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 15:58:13
平田豊@フォロバ100 @yutakakn

GCC8の対応がカーネルに入っていて、もうGCC8が出たのかと思ったら、GW中にGCC8がリリースされていました。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:08:14
平田豊@フォロバ100 @yutakakn

Linuxカーネルのprintfでの%pはハッシュアドレスで、真のポインタアドレスにはならないので、%pxに修正されていますが、この手の問題箇所は他にもありそうです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:10:45
平田豊@フォロバ100 @yutakakn

Linuxをfreeze(ハイバネーションのこと)させた後のレジューム時、PCIコンフィグレーション空間が復元できていないため、PCIデバイスが正しく動作しなくなるという問題修正です。D0はデバイスの電源がオン、D3coldはオフ、D3hotはちょっとだけ電力が流れている状態です。 git.kernel.org/pub/scm/linux/… #タグ

2018-05-27 16:12:10
平田豊@フォロバ100 @yutakakn

Ceph(セフ)というのは初耳でしたが、分散ストレージソフトウェアのことで、Linuxカーネル2.6後期から取り込まれているようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:13:10
平田豊@フォロバ100 @yutakakn

スプリアス割り込み(spurious interrupts)というのは、ハードウェアから要因不明の割り込みが上がったことを表し、処理のしようがないのでdebug printして無視するしかありません。一般的にはハードウエアの故障を意味します。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:14:02
平田豊@フォロバ100 @yutakakn

デバイスドライバ(無線ラジオコントロールドライバ)を取り外す際、ヌルポでカーネルパニックするという問題が修正されています。ドライバの取り外しは非常に難しく、頭を抱えるところとして定番です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:15:05
平田豊@フォロバ100 @yutakakn

カーネル関数のstrncpy_from_user()は、ANSI Cのstrncpy()に似せた仕様のため、バッファフルだとNULL終端されないことに対する修正です。strncpyはベテランでも落とし穴にはまることがあります。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:15:42
平田豊@フォロバ100 @yutakakn

Sambaのディレクトリに対するfsyncをエラーにさせないようにする修正ですが、そもそもディレクトリにfsyncする必要あるのかと思いましたが、manページにきちんと書いてありますね。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:16:11
平田豊@フォロバ100 @yutakakn

NVMeのドライバにIntelの方が修正されています。NVMeというのはSATAではなくPCI ExpressでつなぐSSDのことです。NVMeは不揮発性メモリのPCI Expressという意味で、SSDより高速と謳われています。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:16:47
平田豊@フォロバ100 @yutakakn

Exynos4210ってなんだろう思ったら、サムスンがARM系プロセッサを製造販売していたんですね。知りませんでした。Linuxカーネルへのパッチは温度センサのバグ修正です。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:19:17
平田豊@フォロバ100 @yutakakn

SO_BINDTODEVICEなんていうソケットオプションがあるんですね。ソケットとインターフェイスを結びつけることができます。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:19:48
平田豊@フォロバ100 @yutakakn

ボンディングドライバで受信ロードバランシング(RLB)の際、不正なMACアドレスを弾く修正です。ボンディングとチーミングは同義だと思っていたのですが、RHEL7にはそれぞれ機能が用意されているようです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:20:15
平田豊@フォロバ100 @yutakakn

RTCデバイスの初期化中にデバイスファイルを有効化しているため、別コンテキストで割り込みが起こるとカーネルパニックするという問題の修正で、スタックトレースも含めて解説されていて大変わかりやすいです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-27 16:20:39
平田豊@フォロバ100 @yutakakn

goldfish RTCドライバにライセンスが付与されていなかった問題の修正です。goldfishというのはAndroidエミュレータ用の仮想RTCデバイスのことで、通常のサーバやPCには搭載されていないデバイスです。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-28 17:07:56
平田豊@フォロバ100 @yutakakn

unsigned charの変数を24ビット左シフトすると、signed intとして扱われるので、それをそのままunsigned long(8バイト)に代入すると、上位4バイトがMSBで埋め尽くされるという問題修正ですが、C言語ベテランでもハマりそう。 git.kernel.org/pub/scm/linux/… #カーネルパッチ勉強会

2018-05-29 15:50:17
1 ・・ 12 次へ