From c6f5b85f49f565ca0a65dcae04a70e87cae6281d Mon Sep 17 00:00:00 2001 From: 5ec1cff Date: Sat, 23 Nov 2024 20:45:47 +0800 Subject: [PATCH] ksud: fix clone symlink --- userspace/ksud/src/magic_mount.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/userspace/ksud/src/magic_mount.rs b/userspace/ksud/src/magic_mount.rs index f4b45d2a..51bb6d73 100644 --- a/userspace/ksud/src/magic_mount.rs +++ b/userspace/ksud/src/magic_mount.rs @@ -15,7 +15,7 @@ use std::cmp::PartialEq; use std::collections::hash_map::Entry; use std::collections::HashMap; use std::fs; -use std::fs::{create_dir, create_dir_all, read_dir, DirEntry, FileType}; +use std::fs::{create_dir, create_dir_all, read_dir, read_link, DirEntry, FileType}; use std::os::unix::fs::{symlink, FileTypeExt}; use std::path::{Path, PathBuf}; @@ -171,8 +171,15 @@ fn collect_module_files() -> Result> { } fn clone_symlink, Dst: AsRef>(src: Src, dst: Dst) -> Result<()> { - symlink(src.as_ref(), dst.as_ref())?; + let src_symlink = read_link(src.as_ref())?; + symlink(&src_symlink, dst.as_ref())?; lsetfilecon(dst.as_ref(), lgetfilecon(src.as_ref())?.as_str())?; + log::debug!( + "clone symlink {} -> {}({})", + dst.as_ref().display(), + dst.as_ref().display(), + src_symlink.display() + ); Ok(()) }