ksud: Add cli interface for nuke_ext4_sysfs
This commit is contained in:
@@ -152,6 +152,11 @@ enum Commands {
|
||||
#[command(subcommand)]
|
||||
command: Debug,
|
||||
},
|
||||
/// Kernel interface
|
||||
Kernel {
|
||||
#[command(subcommand)]
|
||||
command: Kernel,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(clap::Subcommand, Debug)]
|
||||
@@ -378,6 +383,15 @@ enum Feature {
|
||||
Save,
|
||||
}
|
||||
|
||||
#[derive(clap::Subcommand, Debug)]
|
||||
enum Kernel {
|
||||
/// Nuke ext4 sysfs
|
||||
NukeExt4Sysfs {
|
||||
/// mount point
|
||||
mnt: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "aarch64")]
|
||||
mod kpm_cmd {
|
||||
use clap::Subcommand;
|
||||
@@ -590,6 +604,9 @@ pub fn run() -> Result<()> {
|
||||
magiskboot,
|
||||
flash,
|
||||
} => crate::boot_patch::restore(boot, magiskboot, flash),
|
||||
Commands::Kernel { command } => match command {
|
||||
Kernel::NukeExt4Sysfs { mnt } => ksucalls::nuke_ext4_sysfs(&mnt),
|
||||
},
|
||||
#[cfg(target_arch = "aarch64")]
|
||||
Commands::Kpm { command } => {
|
||||
use crate::cli::kpm_cmd::Kpm;
|
||||
|
||||
@@ -17,6 +17,7 @@ const KSU_IOCTL_GET_FEATURE: u32 = 0xc0004b0d; // _IOC(_IOC_READ|_IOC_WRITE, 'K'
|
||||
const KSU_IOCTL_SET_FEATURE: u32 = 0x40004b0e; // _IOC(_IOC_WRITE, 'K', 14, 0)
|
||||
const KSU_IOCTL_GET_WRAPPER_FD: u32 = 0x40004b0f; // _IOC(_IOC_WRITE, 'K', 15, 0)
|
||||
const KSU_IOCTL_MANAGE_MARK: u32 = 0xc0004b10; // _IOC(_IOC_READ|_IOC_WRITE, 'K', 16, 0)
|
||||
const KSU_IOCTL_NUKE_EXT4_SYSFS: u32 = 0xc0004b11; // _IOC(_IOC_READ|_IOC_WRITE, 'K', 17, 0)
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Clone, Copy, Default)]
|
||||
@@ -73,6 +74,12 @@ struct ManageMarkCmd {
|
||||
result: u32,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Clone, Copy, Default)]
|
||||
pub struct NukeExt4SysfsCmd {
|
||||
pub arg: u64,
|
||||
}
|
||||
|
||||
// Mark operation constants
|
||||
const KSU_MARK_GET: u32 = 1;
|
||||
const KSU_MARK_MARK: u32 = 2;
|
||||
@@ -294,3 +301,12 @@ pub fn mark_refresh() -> std::io::Result<()> {
|
||||
ksuctl(KSU_IOCTL_MANAGE_MARK, &mut cmd as *mut _)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn nuke_ext4_sysfs(mnt: &str) -> anyhow::Result<()> {
|
||||
let c_mnt = std::ffi::CString::new(mnt)?;
|
||||
let mut ioctl_cmd = NukeExt4SysfsCmd {
|
||||
arg: c_mnt.as_ptr() as u64,
|
||||
};
|
||||
ksuctl(KSU_IOCTL_NUKE_EXT4_SYSFS, &mut ioctl_cmd as *mut _)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
3
userspace/meta-overlayfs/metamodule/post-mount.sh
Normal file
3
userspace/meta-overlayfs/metamodule/post-mount.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/system/bin/sh
|
||||
|
||||
ksud kernel nuke-ext4-sysfs /data/adb/modules/meta-overlayfs/mnt
|
||||
Reference in New Issue
Block a user