Linux host2.homegym.sg 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64
Apache
Server IP : 159.223.38.192 & Your IP : 159.223.38.192
Domains : 20 Domain
User : eachadea
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Lock Shell
Lock File++
Readme
/
usr /
src /
file_protector-1.1-1583 /
Delete
Unzip
Name
Size
Permission
Date
Action
common
[ DIR ]
drwxr-xr-x
2025-10-28 18:03
ftrace_hooks
[ DIR ]
drwxr-xr-x
2025-10-28 18:03
lsm_hooks
[ DIR ]
drwxr-xr-x
2025-10-28 18:03
syscall_hooks
[ DIR ]
drwxr-xr-x
2025-10-28 18:03
transport
[ DIR ]
drwxr-xr-x
2025-10-28 18:03
Kbuild
10.29
KB
-rw-r--r--
2025-10-28 18:03
Makefile
2.23
KB
-rw-r--r--
2025-10-28 18:03
compat.c
8.42
KB
-rw-r--r--
2025-10-28 18:03
compat.h
11.98
KB
-rw-r--r--
2025-10-28 18:03
debug.h
3.56
KB
-rw-r--r--
2025-10-28 18:03
dkms.conf
146
B
-rw-r--r--
2025-10-28 18:03
file_contexts.c
60.43
KB
-rw-r--r--
2025-10-28 18:03
file_contexts.h
6.21
KB
-rw-r--r--
2025-10-28 18:03
file_contexts_priv.h
5.48
KB
-rw-r--r--
2025-10-28 18:03
file_handle_tools.h
2.53
KB
-rw-r--r--
2025-10-28 18:03
file_key_tools.h
950
B
-rw-r--r--
2025-10-28 18:03
file_path_tools.h
2.09
KB
-rw-r--r--
2025-10-28 18:03
hashtable_compat.h
2.73
KB
-rw-r--r--
2025-10-28 18:03
hook_trampoline_common.h
4.29
KB
-rw-r--r--
2025-10-28 18:03
interval_tree.h
779
B
-rw-r--r--
2025-10-28 18:03
memory.c
3.31
KB
-rw-r--r--
2025-10-28 18:03
memory.h
2.99
KB
-rw-r--r--
2025-10-28 18:03
module.c
2.67
KB
-rw-r--r--
2025-10-28 18:03
module_ref.h
421
B
-rw-r--r--
2025-10-28 18:03
module_rundown_protection.c
3.64
KB
-rw-r--r--
2025-10-28 18:03
module_rundown_protection.h
743
B
-rw-r--r--
2025-10-28 18:03
path_tools.h
6.06
KB
-rw-r--r--
2025-10-28 18:03
rundown_protection.c
4.2
KB
-rw-r--r--
2025-10-28 18:03
rundown_protection.h
2.83
KB
-rw-r--r--
2025-10-28 18:03
safe_kobject.h
1.28
KB
-rw-r--r--
2025-10-28 18:03
si_common.h
4.3
KB
-rw-r--r--
2025-10-28 18:03
si_fp_properties.h
858
B
-rw-r--r--
2025-10-28 18:03
si_fp_properties_x.h
18.53
KB
-rw-r--r--
2025-10-28 18:03
si_fp_value_types.h
515
B
-rw-r--r--
2025-10-28 18:03
si_fp_value_types_x.h
1.25
KB
-rw-r--r--
2025-10-28 18:03
si_size.h
4.26
KB
-rw-r--r--
2025-10-28 18:03
si_templates.h
2.99
KB
-rw-r--r--
2025-10-28 18:03
si_writer.h
7.52
KB
-rw-r--r--
2025-10-28 18:03
si_writer_common.h
14.63
KB
-rw-r--r--
2025-10-28 18:03
stringify.h
261
B
-rw-r--r--
2025-10-28 18:03
task_info_map.c
17.1
KB
-rw-r--r--
2025-10-28 18:03
task_info_map.h
6.33
KB
-rw-r--r--
2025-10-28 18:03
task_tools.h
1.34
KB
-rw-r--r--
2025-10-28 18:03
tracepoints.c
3.58
KB
-rw-r--r--
2025-10-28 18:03
tracepoints.h
299
B
-rw-r--r--
2025-10-28 18:03
write_protection.h
2.2
KB
-rw-r--r--
2025-10-28 18:03
Save
Rename
/** @file @brief Linux kernel memory management interface wrapper @details Copyright (c) 2025 Acronis International GmbH @author Denis Kopyrin (denis.kopyrin@acronis.com) @since $Id: $ */ #include "memory.h" #include "compat.h" #include <linux/module.h> #include <linux/kobject.h> struct kmem_cache *g_handles_cache = NULL; memory_metrics_t* g_memory_metrics = NULL; struct metrics_attribute { struct attribute attr; ssize_t (*show)(memory_metrics_t* metrics, char *buf); }; #define METRIC_X \ METRIC(total_file_contexts_tables) \ METRIC(total_transports) \ METRIC(total_transport_events) \ METRIC(total_msgs) \ METRIC(total_msgs_size) \ METRIC(total_sized_msgs) \ METRIC(total_sized_msgs_size) #define METRICS_ATTR_RO(_name) \ static ssize_t _name##_show(memory_metrics_t* metrics, char *buf) \ { \ return sprintf(buf, "%ld\n", (long) atomic64_read(&metrics->_name)); \ } \ static const struct metrics_attribute s_metrics_attr_##_name = __ATTR_RO(_name) #define METRIC(_name) METRICS_ATTR_RO(_name); METRIC_X #undef METRIC static const struct attribute *s_metrics_attrs[] = { #define METRIC(_name) &s_metrics_attr_##_name.attr, METRIC_X #undef METRIC NULL }; #define to_metrics(_at) container_of(to_safe_kobject(_at), memory_metrics_t, skobj) #define to_metrics_attr(_at) container_of(_at, struct metrics_attribute, attr) static ssize_t metrics_show(struct kobject *kobj, struct attribute *attr, char *buf) { memory_metrics_t* metrics = to_metrics(kobj); struct metrics_attribute *metrics_attr = to_metrics_attr(attr); return metrics_attr->show(metrics, buf); } const struct sysfs_ops s_metrics_sysfs_ops = { .show = metrics_show, }; static struct kobj_type s_metrics_ktype = { .release = safe_kobject_sysfs_release, .sysfs_ops = &s_metrics_sysfs_ops, }; static int sysfs_metrics_add(memory_metrics_t *metrics) { return sysfs_create_files(&metrics->skobj.kobj, s_metrics_attrs); } int memory_init(void) { int err; g_memory_metrics = mem_alloc(sizeof(memory_metrics_t)); if (!g_memory_metrics) { return -ENOMEM; } g_handles_cache = kmem_cache_create("fileprotector_file_handle", MAX_HANDLE_SZ, 0, 0, NULL); if (!g_handles_cache) { mem_free(g_memory_metrics); return -ENOMEM; } #define METRIC(_name) atomic64_set(&g_memory_metrics->_name, 0); METRIC_X #undef METRIC safe_kobject_init(&g_memory_metrics->skobj); err = kobject_init_and_add(&g_memory_metrics->skobj.kobj, &s_metrics_ktype, &THIS_MODULE->mkobj.kobj, "metrics"); if (err) { // If 'init_and_add' fails, it really means that 'add' has failed // 'put' without wait will suffice because 'sysfs' does not see metrics yet kobject_put(&g_memory_metrics->skobj.kobj); goto fail; } err = sysfs_metrics_add(g_memory_metrics); if (err) { // Now we are required to use 'safe_kobject_del' because sysfs saw 'add' above. safe_kobject_del(&g_memory_metrics->skobj); goto fail; } return 0; fail: mem_free(g_memory_metrics); kmem_cache_destroy(g_handles_cache); return err; } void memory_deinit(void) { if (g_handles_cache) { kmem_cache_destroy(g_handles_cache); } #ifdef KERNEL_MOCK #define METRIC(_name) BUG_ON(atomic64_read(&g_memory_metrics->_name)); METRIC_X #undef METRIC #endif if (g_memory_metrics) { sysfs_remove_files(&g_memory_metrics->skobj.kobj, s_metrics_attrs); safe_kobject_del(&g_memory_metrics->skobj); mem_free(g_memory_metrics); } }