Prev: [37/98] perf: Fix resource leak in failure path of perf_event_open()
Next: [60/98] ext4: correctly calculate number of blocks for fiemap
From: Greg KH on 10 May 2010 19:20 2.6.32-stable review patch. If anyone has any objections, please let us know. ------------------ From: Neil Horman <nhorman(a)tuxdriver.com> commit 38ff3e6bb987ec583268da8eb22628293095d43b 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(a)tuxdriver.com> Acked-by: Arnaldo Carvalho de Melo <acme(a)redhat.com> Signed-off-by: David S. Miller <davem(a)davemloft.net> Cc: maximilian attems <max(a)stro.at> Signed-off-by: Greg Kroah-Hartman <gregkh(a)suse.de> --- net/dccp/probe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/net/dccp/probe.c +++ b/net/dccp/probe.c @@ -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; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |