mirror of
https://github.com/torvalds/linux.git
synced 2026-06-09 07:03:37 +02:00
dccp_probe: Fix module load dependencies between dccp and dccp_probe
commit 38ff3e6bb9 upstream.
This was just recently reported to me. When built as modules, the
dccp_probe module has a silent dependency on the dccp module. This
stems from the fact that the module_init routine of dccp_probe
registers a jprobe on the dccp_sendmsg symbol. Since the symbol is
only referenced as a text string (the .symbol_name field in the jprobe
struct) rather than the address of the symbol itself, depmod never
picks this dependency up, and so if you load the dccp_probe module
without the dccp module loaded, the register_jprobe call fails with an
-EINVAL, and the whole module load fails.
The fix is pretty easy, we can just wrap the register_jprobe call in a
try_then_request_module call, which forces the dependency to get
satisfied prior to the probe registration.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: maximilian attems <max@stro.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
8b0744c9cb
commit
3b1aa6380f
|
|
@ -164,7 +164,8 @@ static __init int dccpprobe_init(void)
|
|||
if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops))
|
||||
goto err0;
|
||||
|
||||
ret = register_jprobe(&dccp_send_probe);
|
||||
ret = try_then_request_module((register_jprobe(&dccp_send_probe) == 0),
|
||||
"dccp");
|
||||
if (ret)
|
||||
goto err1;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user