This idea is borrowed from simonpunk's susfs4ksu. What we see here is that, yeah well, lets just have userspace send us what it wants unmounted, this is better than hardcoding everything. This also solves that issue where MNT_DETACH fails, as long as we send unmountables in proper order. A small anti-duplicate mechanism is also added. While in-kernel umount is a bit worse than zygisk-provider-based ones, this can still serve as a healthy alternative. --------- - Remove duplicate checks Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com> Co-authored-by: weishu <twsxtd@gmail.com> Co-authored-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
26 lines
582 B
C
26 lines
582 B
C
#ifndef __KSU_H_KERNEL_UMOUNT
|
|
#define __KSU_H_KERNEL_UMOUNT
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/list.h>
|
|
#include <linux/rwsem.h>
|
|
|
|
void ksu_kernel_umount_init(void);
|
|
void ksu_kernel_umount_exit(void);
|
|
|
|
#ifndef CONFIG_KSU_SUSFS
|
|
// Handler function to be called from setresuid hook
|
|
int ksu_handle_umount(uid_t old_uid, uid_t new_uid);
|
|
#endif // #ifndef CONFIG_KSU_SUSFS
|
|
|
|
// for the umount list
|
|
struct mount_entry {
|
|
char *umountable;
|
|
unsigned int flags;
|
|
struct list_head list;
|
|
};
|
|
extern struct list_head mount_list;
|
|
extern struct rw_semaphore mount_list_lock;
|
|
|
|
#endif
|