param_set_charp()から呼び出している maybe_kfree_parameter() と kmalloc_parameter() の中でリスト操作をしています。リスト操作は list_add(), list_del(), list_for_each_entry() です。これらは基本的な双方向リンク・チェインの操作です。ユーザー・ランドから write() system call は平行して使うことができます。何処かで排他制御をして、リンク・リスト操作を一貫して行う必要が有ります。排他制御がされているのか追ってみましょう。
dump_stack() を使って追跡することにします。param_set_charp() が呼ばれるまでの Call 経路は構造体に格納された関数を指すポインタを使って決まっています。丁寧にソース・コードを読解していくよりは dump_stack() を使って関数名を得ることにします。