ローダブル・カーネル・モジュール
カーネルのモジュール化についてのもっと細かい批判として、いわゆるフラグメンテーションによるペナルティがある。カーネル本体はメモリ内の連続領域に展開され、断片化されることはない。しかし、LKMのロード/アンロードを繰り返すと、カーネルコードのフラグメンテーションが発生する。したがって、若干の性能低下が起きる。
そのようなドライバによるバグやシステムクラッシュが発生したとしてもソースコードを改変できないため、Linuxカーネルコミュニティ側では全く解決できない。これは昔からコミュニティの悩みの種となっているため、カーネル内の極めて重要なオブジェクトや、問題がひとたび発生するとシステムがクラッシュするような処理を最初からバイナリオンリードライバには実行できないようにしようとしたのである。
Linuxantについての論争
LinuxantはプロプライエタリなLKMを販売しているコンサルティング企業であるが、同社がMODULE_LICENSEマクロに与えたライセンス文字列にヌル文字(\0)を忍び込ませることによりライセンスによる制限を突破していたことが2004年コミュニティにより発覚した。以下は当該モジュールにて実装されていたライセンス定義箇所の再現。
ライセンス文字列からヌル文字を除去して和訳すると「"GPL" というディレクトリには GPL を適用したファイルがあり、他には LICENSE ファイルが適用される」となる。
当時のカーネルはモジュールのライセンスをC言語で一般的な、ヌル文字で終端した文字列として記述しており、モジュールのライセンスがGPLを含むか否かの判別処理に用いていた関数strcmpはヌル文字に達したところで比較をやめるため、モジュールのライセンスがGPLだと誤って判断してしまった。しかし、その後の文に書いてあるGPLディレクトリは空であり、GPLにて配布されていた箇所は全くなかった。
Linuxカーネル、バージョン6.6現在、上述のモジュールライセンス判定処理や、ライセンス文字列をヌル文字に依存しない形式に変更するなどの修正はされていない。