From 0bbfe7f44d4ae707303cc0474b8447a24c60fe7d Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Mon, 24 Mar 2025 15:10:26 -0700 Subject: [PATCH] Fix 2SI on legacy SAR devices --- native/src/init/twostage.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/native/src/init/twostage.rs b/native/src/init/twostage.rs index 5d165aa0e..6ba64650c 100644 --- a/native/src/init/twostage.rs +++ b/native/src/init/twostage.rs @@ -1,11 +1,11 @@ use crate::ffi::MagiskInit; use base::{ - clone_attr, cstr, debug, error, info, + LibcReturn, LoggedResult, MappedFile, MutBytesExt, ResultExt, cstr, debug, error, info, libc::{ - mount, statfs, umount2, MNT_DETACH, MS_BIND, O_CLOEXEC, - O_CREAT, O_RDONLY, O_WRONLY, TMPFS_MAGIC, + MNT_DETACH, MS_BIND, O_CLOEXEC, O_CREAT, O_RDONLY, O_WRONLY, TMPFS_MAGIC, mount, statfs, + umount2, }, - path, raw_cstr, LibcReturn, MappedFile, MutBytesExt, ResultExt, + path, raw_cstr, }; use std::{ffi::c_long, io::Write, ptr::null}; @@ -113,12 +113,13 @@ impl MagiskInit { error!("Failed to open {} for hexpatch", src); } } - clone_attr(src, dest).log_ok(); - unsafe { - mount(dest.as_ptr(), src.as_ptr(), null(), MS_BIND, null()) - .as_os_err() - .ok(); - } + let _: LoggedResult<()> = try { + let attr = src.follow_link().get_attr()?; + dest.set_attr(&attr)?; + unsafe { + mount(dest.as_ptr(), src.as_ptr(), null(), MS_BIND, null()).as_os_err()?; + } + }; } pub(crate) fn second_stage(&mut self) {