rem: if (module->loaded_module->ref_count == 0) unload_module_file(module->file); }
add: put_module_image(module->module_image);
context: put_module(const char *path){	module *module;	TRACE(("put_module(path = %s)\n", path));	recursive_lock_lock(&gModulesLock);	module = (struct module *)hash_lookup(gModulesHash, path);	if (module == NULL) {		FATAL(("module: We don't seem to have a reference to module %s\n", path));		recursive_lock_unlock(&gModulesLock);		return B_BAD_VALUE;	}	DEC_MOD_REF_COUNT(module);	// If there are nomore references to this module - must we keep it loaded?	if (module->ref_count == 0 && !module->keep_loaded) {		// destruct the module, and check if we can also unload the		// loaded module it refers to		uninit_module(module);		if (module->loaded_module->ref_count == 0)			unload_module_file(module->file);	}	recursive_lock_unlock(&gModulesLock);	return B_OK;}