レガシーガジェット研究所

気になったことのあれこれ。

Linux Kernelへのパッチ作成及び送信手順

1. 変更を行う

2. コミットをrebaseし纏める

git rebase -i [commit id]

3. パッチの作成

git format-patch [commit id]

4. パッチの確認

./scripts/checkpatch.pl [patch file]

ここで何らかのエラーが出力される場合には修正を行う。

  • 変数宣言の空白行の有無

空白行を追加する。

WARNING: Missing a blank line after declarations
#21: FILE: kernel/sched/core.c:6706:
+       u64 quota, period;
+       if (cfs_percent < 0)
  • Signed-off-byの有無

コミット(git commit)時に-sのオプションを追加することでコミットに付加することが可能。git commit --amend -sなどコミット後の変更も可能。

ERROR: Missing Signed-off-by: line(s)

5. パッチを送信するメンテナの確認

./scripts/get_maintainer.pl [patch file]

出力例:

$ ./scripts/get_maintainer.pl 0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch
Ingo Molnar <mingo@redhat.com> (maintainer:SCHEDULER)
Peter Zijlstra <peterz@infradead.org> (maintainer:SCHEDULER)
linux-kernel@vger.kernel.org (open list:SCHEDULER)

6. パッチの送信

送信者以外にもメーリングリストや自身へのCCは推奨されている。

コマンド例:

$ git send-email \
--to='mingo@redhat.com'
--cc-cmd='./scripts/get_maintainer.pl --norolestats 0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch' \
--cc='peterz@infradead.org' \
--cc='linux-kernel@vger.kernel.org' \
--cc='princeontrojanhorse@gmail.com' \
0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch

参考