--- a/net/dccp/ccid.c +++ b/net/dccp/ccid.c @@ -223,7 +223,7 @@ int __init ccid_initialize_builtins(void err = tfrc_sp_lib_init(); if (err) - return err; + goto unwind_tfrc_lib; for (i = 0; i < ARRAY_SIZE(ccids); i++) { err = ccid_activate(ccids[i]); @@ -235,8 +235,10 @@ int __init ccid_initialize_builtins(void unwind_registrations: while(--i >= 0) ccid_deactivate(ccids[i]); - tfrc_lib_exit(); + tfrc_sp_lib_exit(); +unwind_tfrc_lib: + tfrc_lib_exit(); return err; } @@ -246,6 +248,6 @@ void ccid_cleanup_builtins(void) for (i = 0; i < ARRAY_SIZE(ccids); i++) ccid_deactivate(ccids[i]); - tfrc_lib_exit(); tfrc_sp_lib_exit(); + tfrc_lib_exit(); }