static struct bin_data_t _pthread_init;
+static void uninit_local_variables(void)
+{
+ swap_dput(_linker_fixup.dentry);
+ _linker_fixup.dentry = NULL;
+ _linker_fixup.off = 0;
+
+ swap_dput(_linker_reloc.dentry);
+ _linker_reloc.dentry = NULL;
+ _linker_reloc.off = 0;
+
+ swap_dput(_handler_fixup.dentry);
+ _handler_fixup.dentry = NULL;
+ _handler_fixup.off = 0;
+
+ swap_dput(_handler_reloc.dentry);
+ _handler_reloc.dentry = NULL;
+ _handler_reloc.off = 0;
+
+ swap_dput(_pthread_init.dentry);
+ _pthread_init.dentry = NULL;
+ _pthread_init.off = 0;
+}
+
static inline void _lock_probes_list(void)
{
mutex_lock(&_linker_probes_lock);
return -EINVAL;
ret = _remove_from_list(_check_by_dentry, dentry);
+ swap_dput(dentry);
return ret;
}
gtd_exit();
_clean_linker_probes();
-
- swap_dput(_handler_fixup.dentry);
- _handler_fixup.dentry = NULL;
-
- swap_dput(_handler_reloc.dentry);
- _handler_reloc.dentry = NULL;
+ uninit_local_variables();
}
SWAP_LIGHT_INIT_MODULE(NULL, gtm_init, gtm_exit, NULL, NULL);