param_set_charp の排他制御は大丈夫?
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&ogproject(linux-4.1.27);
#textbox(context,&ogproject(linux-4.1.27); このページは &...
* param_set_charp の排他制御は大丈夫? [#ha1ef2b3]
&ogdefs(param_set_charp(),param_set_charp);から呼び出して...
#code(c,/static\s*void\s*maybe_kfree_parameter/../^}$/,og...
#code(c,/void\s*[*]\s*kmalloc_parameter/../^}$/,ogfileone...
** dump_stack() を使って追跡する [#f2884ee0]
&ogdefs(dump_stack(),dump_stack,dump_stack.c); を使って追...
#code(diff,soft){{
diff --git a/kernel/params.c b/kernel/params.c
index a22d6a75..9a1fe5a 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -285,6 +285,7 @@ int param_set_charp(const char *val, ...
if (!*(char **)kp->arg)
return -ENOMEM;
strcpy(*(char **)kp->arg, val);
+ dump_stack();
} else
*(const char **)kp->arg = val;
}}
#textbox(caution,dump_stack()を通過する頻度に注意){{
ここでは &ogdefs(dump_stack(),dump_stack,dump_stack.c); ...
}}
[[module_param を実装した hello_world モジュール>HelloYou...
#pre(soft){{
&span(ConsoleOut){[ 212.911142] hello_world: module veri...
&span(ConsoleOut){[ 212.913390] hello_world_init: Hello ...
&span(ConsoleOut){[ 241.250795] CPU: 0 PID: 2252 Comm: b...
&span(ConsoleOut){[ 241.250819] Hardware name: innotek G...
&span(ConsoleOut){[ 241.250834] 0000000000000000 ffff88...
&span(ConsoleOut){[ 241.250852] ffff88007b781988 ffff88...
&span(ConsoleOut){[ 241.250867] ffff88005cd62ea8 000000...
&span(ConsoleOut){[ 241.250881] Call Trace:};
&span(ConsoleOut){[ 241.250915] [<ffffffff817d0d29>] du...
&span(ConsoleOut){[ 241.250939] [<ffffffff8109943b>] pa...
&span(ConsoleOut){[ 241.250957] [<ffffffff8109988d>] pa...
&span(ConsoleOut){[ 241.251015] [<ffffffff81275072>] ? ...
&span(ConsoleOut){[ 241.251033] [<ffffffff81098cad>] mo...
&span(ConsoleOut){[ 241.251047] [<ffffffff81275bfd>] sy...
&span(ConsoleOut){[ 241.251063] [<ffffffff812750aa>] ke...
&span(ConsoleOut){[ 241.251082] [<ffffffff811fa198>] __...
&span(ConsoleOut){[ 241.251099] [<ffffffff811fcda9>] ? ...
&span(ConsoleOut){[ 241.251118] [<ffffffff81320373>] ? ...
&span(ConsoleOut){[ 241.251133] [<ffffffff811fa889>] vf...
&span(ConsoleOut){[ 241.251148] [<ffffffff811fb656>] Sy...
&span(ConsoleOut){[ 241.251166] [<ffffffff81068080>] ? ...
&span(ConsoleOut){[ 241.251227] [<ffffffff817d8b72>] sy...
}}
&ogdefs(vfs_write(),vfs_write); が Linux kernel の仮想フ...
** グローバルな mutex param_lock [#y974542c]
&ogdefs(param_set_charp(),param_set_charp); から逆にたど...
#code(c,/static\s*DEFINE_MUTEX.*param_lock/../^};$/,ogfil...
#code(c,/ssize_t\s*param_attr_store/../^}$/,ogfileone:/ke...
** kernel 4.2.x では排他制御の実装が変わっている [#z2d84b...
kernel 4.2.x の [[maybe_kfree_parameter()>http://lxr.free...
&ogproject(-);
#textbox(context, &ogproject(-););
終了行:
&ogproject(linux-4.1.27);
#textbox(context,&ogproject(linux-4.1.27); このページは &...
* param_set_charp の排他制御は大丈夫? [#ha1ef2b3]
&ogdefs(param_set_charp(),param_set_charp);から呼び出して...
#code(c,/static\s*void\s*maybe_kfree_parameter/../^}$/,og...
#code(c,/void\s*[*]\s*kmalloc_parameter/../^}$/,ogfileone...
** dump_stack() を使って追跡する [#f2884ee0]
&ogdefs(dump_stack(),dump_stack,dump_stack.c); を使って追...
#code(diff,soft){{
diff --git a/kernel/params.c b/kernel/params.c
index a22d6a75..9a1fe5a 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -285,6 +285,7 @@ int param_set_charp(const char *val, ...
if (!*(char **)kp->arg)
return -ENOMEM;
strcpy(*(char **)kp->arg, val);
+ dump_stack();
} else
*(const char **)kp->arg = val;
}}
#textbox(caution,dump_stack()を通過する頻度に注意){{
ここでは &ogdefs(dump_stack(),dump_stack,dump_stack.c); ...
}}
[[module_param を実装した hello_world モジュール>HelloYou...
#pre(soft){{
&span(ConsoleOut){[ 212.911142] hello_world: module veri...
&span(ConsoleOut){[ 212.913390] hello_world_init: Hello ...
&span(ConsoleOut){[ 241.250795] CPU: 0 PID: 2252 Comm: b...
&span(ConsoleOut){[ 241.250819] Hardware name: innotek G...
&span(ConsoleOut){[ 241.250834] 0000000000000000 ffff88...
&span(ConsoleOut){[ 241.250852] ffff88007b781988 ffff88...
&span(ConsoleOut){[ 241.250867] ffff88005cd62ea8 000000...
&span(ConsoleOut){[ 241.250881] Call Trace:};
&span(ConsoleOut){[ 241.250915] [<ffffffff817d0d29>] du...
&span(ConsoleOut){[ 241.250939] [<ffffffff8109943b>] pa...
&span(ConsoleOut){[ 241.250957] [<ffffffff8109988d>] pa...
&span(ConsoleOut){[ 241.251015] [<ffffffff81275072>] ? ...
&span(ConsoleOut){[ 241.251033] [<ffffffff81098cad>] mo...
&span(ConsoleOut){[ 241.251047] [<ffffffff81275bfd>] sy...
&span(ConsoleOut){[ 241.251063] [<ffffffff812750aa>] ke...
&span(ConsoleOut){[ 241.251082] [<ffffffff811fa198>] __...
&span(ConsoleOut){[ 241.251099] [<ffffffff811fcda9>] ? ...
&span(ConsoleOut){[ 241.251118] [<ffffffff81320373>] ? ...
&span(ConsoleOut){[ 241.251133] [<ffffffff811fa889>] vf...
&span(ConsoleOut){[ 241.251148] [<ffffffff811fb656>] Sy...
&span(ConsoleOut){[ 241.251166] [<ffffffff81068080>] ? ...
&span(ConsoleOut){[ 241.251227] [<ffffffff817d8b72>] sy...
}}
&ogdefs(vfs_write(),vfs_write); が Linux kernel の仮想フ...
** グローバルな mutex param_lock [#y974542c]
&ogdefs(param_set_charp(),param_set_charp); から逆にたど...
#code(c,/static\s*DEFINE_MUTEX.*param_lock/../^};$/,ogfil...
#code(c,/ssize_t\s*param_attr_store/../^}$/,ogfileone:/ke...
** kernel 4.2.x では排他制御の実装が変わっている [#z2d84b...
kernel 4.2.x の [[maybe_kfree_parameter()>http://lxr.free...
&ogproject(-);
#textbox(context, &ogproject(-););
ページ名: