update to 1.2.2-4
Signed-off-by: renoseven <dev@renoseven.net> (cherry picked from commit ef53460df585f2572812c41491306d6c21c207eb)
This commit is contained in:
parent
784ca2dcb6
commit
eea01c1370
@ -0,0 +1,26 @@
|
|||||||
|
From abefa18605dd7ec20419e8061739357d2a4d67a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: liqiang <liqiang64@huawei.com>
|
||||||
|
Date: Wed, 28 Aug 2024 02:24:59 +0800
|
||||||
|
Subject: [PATCH] fix kernel patch ACCEPTED change to DEACTIVED after reboot
|
||||||
|
|
||||||
|
Signed-off-by: liqiang <liqiang64@huawei.com>
|
||||||
|
---
|
||||||
|
syscared/src/patch/driver/kpatch/sys.rs | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/syscared/src/patch/driver/kpatch/sys.rs b/syscared/src/patch/driver/kpatch/sys.rs
|
||||||
|
index 22efa93..fd5160c 100644
|
||||||
|
--- a/syscared/src/patch/driver/kpatch/sys.rs
|
||||||
|
+++ b/syscared/src/patch/driver/kpatch/sys.rs
|
||||||
|
@@ -90,7 +90,7 @@ pub fn apply_patch(patch: &KernelPatch) -> Result<()> {
|
||||||
|
kmod::finit_module(
|
||||||
|
&patch_module,
|
||||||
|
CString::new("")?.as_c_str(),
|
||||||
|
- kmod::ModuleInitFlags::MODULE_INIT_IGNORE_VERMAGIC,
|
||||||
|
+ kmod::ModuleInitFlags::empty(),
|
||||||
|
)
|
||||||
|
.map_err(|e| anyhow!("Kpatch: {}", std::io::Error::from(e)))
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
97
0002-fix-some-clean-code-problem.patch
Normal file
97
0002-fix-some-clean-code-problem.patch
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
From 224df412c95bf4ac95200b6af44927ad2ef2abac Mon Sep 17 00:00:00 2001
|
||||||
|
From: liqiang <liqiang64@huawei.com>
|
||||||
|
Date: Thu, 29 Aug 2024 03:56:58 +0800
|
||||||
|
Subject: [PATCH] fix some clean code problem
|
||||||
|
|
||||||
|
Signed-off-by: liqiang <liqiang64@huawei.com>
|
||||||
|
---
|
||||||
|
upatch-diff/insn/asm/inat.h | 8 ++++----
|
||||||
|
upatch-diff/insn/inat.c | 6 +++---
|
||||||
|
upatch-diff/insn/insn.c | 6 +++---
|
||||||
|
3 files changed, 10 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/upatch-diff/insn/asm/inat.h b/upatch-diff/insn/asm/inat.h
|
||||||
|
index f446ad8..4ab84d6 100644
|
||||||
|
--- a/upatch-diff/insn/asm/inat.h
|
||||||
|
+++ b/upatch-diff/insn/asm/inat.h
|
||||||
|
@@ -156,7 +156,7 @@ static inline int inat_is_escape(insn_attr_t attr)
|
||||||
|
return attr & INAT_ESC_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline int inat_escape_id(insn_attr_t attr)
|
||||||
|
+static inline unsigned int inat_escape_id(insn_attr_t attr)
|
||||||
|
{
|
||||||
|
return (attr & INAT_ESC_MASK) >> INAT_ESC_OFFS;
|
||||||
|
}
|
||||||
|
@@ -166,7 +166,7 @@ static inline int inat_is_group(insn_attr_t attr)
|
||||||
|
return attr & INAT_GRP_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline int inat_group_id(insn_attr_t attr)
|
||||||
|
+static inline unsigned int inat_group_id(insn_attr_t attr)
|
||||||
|
{
|
||||||
|
return (attr & INAT_GRP_MASK) >> INAT_GRP_OFFS;
|
||||||
|
}
|
||||||
|
@@ -181,7 +181,7 @@ static inline int inat_has_immediate(insn_attr_t attr)
|
||||||
|
return attr & INAT_IMM_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline int inat_immediate_size(insn_attr_t attr)
|
||||||
|
+static inline unsigned int inat_immediate_size(insn_attr_t attr)
|
||||||
|
{
|
||||||
|
return (attr & INAT_IMM_MASK) >> INAT_IMM_OFFS;
|
||||||
|
}
|
||||||
|
@@ -220,4 +220,4 @@ static inline int inat_must_vex(insn_attr_t attr)
|
||||||
|
{
|
||||||
|
return attr & INAT_VEXONLY;
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
\ No newline at end of file
|
||||||
|
+#endif
|
||||||
|
diff --git a/upatch-diff/insn/inat.c b/upatch-diff/insn/inat.c
|
||||||
|
index 193583f..cb5aec6 100644
|
||||||
|
--- a/upatch-diff/insn/inat.c
|
||||||
|
+++ b/upatch-diff/insn/inat.c
|
||||||
|
@@ -43,7 +43,7 @@ insn_attr_t inat_get_escape_attribute(insn_byte_t opcode, int lpfx_id,
|
||||||
|
insn_attr_t esc_attr)
|
||||||
|
{
|
||||||
|
const insn_attr_t *table;
|
||||||
|
- int n;
|
||||||
|
+ unsigned int n;
|
||||||
|
|
||||||
|
n = inat_escape_id(esc_attr);
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ insn_attr_t inat_get_group_attribute(insn_byte_t modrm, int lpfx_id,
|
||||||
|
insn_attr_t grp_attr)
|
||||||
|
{
|
||||||
|
const insn_attr_t *table;
|
||||||
|
- int n;
|
||||||
|
+ unsigned int n;
|
||||||
|
|
||||||
|
n = inat_group_id(grp_attr);
|
||||||
|
|
||||||
|
@@ -95,4 +95,4 @@ insn_attr_t inat_get_avx_attribute(insn_byte_t opcode, insn_byte_t vex_m,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return table[opcode];
|
||||||
|
-}
|
||||||
|
\ No newline at end of file
|
||||||
|
+}
|
||||||
|
diff --git a/upatch-diff/insn/insn.c b/upatch-diff/insn/insn.c
|
||||||
|
index d9a356b..7880eed 100644
|
||||||
|
--- a/upatch-diff/insn/insn.c
|
||||||
|
+++ b/upatch-diff/insn/insn.c
|
||||||
|
@@ -574,6 +574,6 @@ void insn_get_length(struct insn *insn)
|
||||||
|
return;
|
||||||
|
if (!insn->immediate.got)
|
||||||
|
insn_get_immediate(insn);
|
||||||
|
- insn->length = (unsigned char)((unsigned long)insn->next_byte
|
||||||
|
- - (unsigned long)insn->kaddr);
|
||||||
|
-}
|
||||||
|
\ No newline at end of file
|
||||||
|
+ insn->length = (unsigned char)((unsigned long)insn->next_byte -
|
||||||
|
+ (unsigned long)insn->kaddr);
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
49
0003-syscared-fix-active-accepted-patch-failure-issue.patch
Normal file
49
0003-syscared-fix-active-accepted-patch-failure-issue.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From 5a65a46bfe8671ea38710d0fbd230fe6a86ea508 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Fri, 18 Oct 2024 03:10:05 +0800
|
||||||
|
Subject: [PATCH] syscared: fix active accepted patch failure issue
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscared/src/patch/manager.rs | 11 ++++++++---
|
||||||
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscared/src/patch/manager.rs b/syscared/src/patch/manager.rs
|
||||||
|
index 3a724db..a17703c 100644
|
||||||
|
--- a/syscared/src/patch/manager.rs
|
||||||
|
+++ b/syscared/src/patch/manager.rs
|
||||||
|
@@ -47,6 +47,7 @@ const PATCH_REMOVE: TransitionAction = &PatchManager::driver_remove_patch;
|
||||||
|
const PATCH_ACTIVE: TransitionAction = &PatchManager::driver_active_patch;
|
||||||
|
const PATCH_DEACTIVE: TransitionAction = &PatchManager::driver_deactive_patch;
|
||||||
|
const PATCH_ACCEPT: TransitionAction = &PatchManager::driver_accept_patch;
|
||||||
|
+const PATCH_DECLINE: TransitionAction = &PatchManager::driver_decline_patch;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref STATUS_TRANSITION_MAP: IndexMap<Transition, Vec<TransitionAction>> = indexmap! {
|
||||||
|
@@ -59,9 +60,9 @@ lazy_static! {
|
||||||
|
(PatchStatus::Actived, PatchStatus::NotApplied) => vec![PATCH_DEACTIVE, PATCH_REMOVE],
|
||||||
|
(PatchStatus::Actived, PatchStatus::Deactived) => vec![PATCH_DEACTIVE],
|
||||||
|
(PatchStatus::Actived, PatchStatus::Accepted) => vec![PATCH_ACCEPT],
|
||||||
|
- (PatchStatus::Accepted, PatchStatus::NotApplied) => vec![PATCH_ACCEPT, PATCH_DEACTIVE, PATCH_REMOVE],
|
||||||
|
- (PatchStatus::Accepted, PatchStatus::Deactived) => vec![PATCH_ACCEPT, PATCH_DEACTIVE],
|
||||||
|
- (PatchStatus::Accepted, PatchStatus::Actived) => vec![PATCH_ACCEPT],
|
||||||
|
+ (PatchStatus::Accepted, PatchStatus::NotApplied) => vec![PATCH_DECLINE, PATCH_DEACTIVE, PATCH_REMOVE],
|
||||||
|
+ (PatchStatus::Accepted, PatchStatus::Deactived) => vec![PATCH_DECLINE, PATCH_DEACTIVE],
|
||||||
|
+ (PatchStatus::Accepted, PatchStatus::Actived) => vec![PATCH_DECLINE],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -471,6 +472,10 @@ impl PatchManager {
|
||||||
|
fn driver_accept_patch(&mut self, patch: &Patch, _flag: PatchOpFlag) -> Result<()> {
|
||||||
|
self.set_patch_status(patch, PatchStatus::Accepted)
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ fn driver_decline_patch(&mut self, patch: &Patch, _flag: PatchOpFlag) -> Result<()> {
|
||||||
|
+ self.set_patch_status(patch, PatchStatus::Actived)
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for PatchManager {
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
From ab6bc4697532862a9cec3483ce1e24e268ea3a8f Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Fri, 6 Sep 2024 22:14:11 +0800
|
||||||
|
Subject: [PATCH] upatch-helper: fix object upatch id duplicated issue
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
upatch-helper/Cargo.toml | 2 +-
|
||||||
|
upatch-helper/src/main.rs | 6 +++---
|
||||||
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/upatch-helper/Cargo.toml b/upatch-helper/Cargo.toml
|
||||||
|
index 42f3548..b131b66 100644
|
||||||
|
--- a/upatch-helper/Cargo.toml
|
||||||
|
+++ b/upatch-helper/Cargo.toml
|
||||||
|
@@ -9,5 +9,5 @@ rust-version = "1.60"
|
||||||
|
build = "build.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
-syscare-common = { package = "syscare-common", path = "../syscare-common" }
|
||||||
|
anyhow = { version = "1.0" }
|
||||||
|
+uuid = { version = "0.8", features = ["v4"] }
|
||||||
|
diff --git a/upatch-helper/src/main.rs b/upatch-helper/src/main.rs
|
||||||
|
index d98b167..303088c 100644
|
||||||
|
--- a/upatch-helper/src/main.rs
|
||||||
|
+++ b/upatch-helper/src/main.rs
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
use std::{os::unix::process::CommandExt, path::Path, process::Command};
|
||||||
|
|
||||||
|
use anyhow::{bail, Context};
|
||||||
|
-use syscare_common::os;
|
||||||
|
+use uuid::Uuid;
|
||||||
|
|
||||||
|
const UPATCH_CC_ENV: &str = "UPATCH_HELPER_CC";
|
||||||
|
const UPATCH_CXX_ENV: &str = "UPATCH_HELPER_CXX";
|
||||||
|
@@ -50,9 +50,9 @@ fn main() -> anyhow::Result<()> {
|
||||||
|
if exec_args.iter().any(|arg| arg == OUTPUT_FLAG) {
|
||||||
|
command.args(APPEND_ARGS);
|
||||||
|
command.arg(format!(
|
||||||
|
- "-Wa,--defsym,{}0x{:04x}=0",
|
||||||
|
+ "-Wa,--defsym,{}{}=0",
|
||||||
|
UPATCH_ID_PREFIX,
|
||||||
|
- os::process::id()
|
||||||
|
+ Uuid::new_v4(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
170
0005-syscare-build-update-README.md.patch
Normal file
170
0005-syscare-build-update-README.md.patch
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
From 5e878d9fd7c56591a42e851a3821fdcbd72becab Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Mon, 23 Sep 2024 15:34:34 +0800
|
||||||
|
Subject: [PATCH] syscare-build: update README.md
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscare-build/README.md | 80 ++++++++++++++++++++---------------------
|
||||||
|
1 file changed, 40 insertions(+), 40 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscare-build/README.md b/syscare-build/README.md
|
||||||
|
index e0cf66e..1f05c74 100644
|
||||||
|
--- a/syscare-build/README.md
|
||||||
|
+++ b/syscare-build/README.md
|
||||||
|
@@ -9,34 +9,29 @@ syscare build为纯CLI工具,提供从RPM包生成热补丁包的功能,补
|
||||||
|
## 命令行参数
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-Usage: syscare build [OPTIONS] --patch-name <PATCH_NAME> --source <SOURCE> --debuginfo <DEBUGINFO> <PATCHES>...
|
||||||
|
-
|
||||||
|
-Arguments:
|
||||||
|
- <PATCHES>... Patch file(s)
|
||||||
|
-
|
||||||
|
-Options:
|
||||||
|
- -n, --patch-name <PATCH_NAME> Patch name
|
||||||
|
- --patch-arch <PATCH_ARCH> Patch architecture [default: x86_64]
|
||||||
|
- --patch-version <PATCH_VERSION> Patch version [default: 1]
|
||||||
|
- --patch-release <PATCH_RELEASE> Patch release [default: 1]
|
||||||
|
- --patch-description <PATCH_DESCRIPTION> Patch description [default: (none)]
|
||||||
|
- -s, --source <SOURCE> Source package
|
||||||
|
- -d, --debuginfo <DEBUGINFO> Debuginfo package
|
||||||
|
- --workdir <WORKDIR> Working directory [default: .]
|
||||||
|
- -o, --output <OUTPUT> Generated patch output directory [default: .]
|
||||||
|
- --jobs <N> Parallel build jobs [default: 96]
|
||||||
|
- --skip-compiler-check Skip compiler version check (not recommended)
|
||||||
|
- --skip-cleanup Skip post-build cleanup
|
||||||
|
- -v, --verbose Provide more detailed info
|
||||||
|
- -h, --help Print help information
|
||||||
|
- -V, --version Print version information
|
||||||
|
+USAGE:
|
||||||
|
+ syscare build [OPTIONS] --patch-name <PATCH_NAME> --source <SOURCE>... --debuginfo <DEBUGINFO>... --patch <PATCH>...
|
||||||
|
+
|
||||||
|
+OPTIONS:
|
||||||
|
+ -n, --patch-name <PATCH_NAME> Patch name
|
||||||
|
+ --patch-arch <PATCH_ARCH> Patch architecture [default: x86_64]
|
||||||
|
+ --patch-version <PATCH_VERSION> Patch version [default: 1]
|
||||||
|
+ --patch-release <PATCH_RELEASE> Patch release [default: 1]
|
||||||
|
+ --patch-description <PATCH_DESCRIPTION> Patch description [default: (none)]
|
||||||
|
+ --patch-requires <PATCH_REQUIRES>... Patch requirements
|
||||||
|
+ -s, --source <SOURCE>... Source package(s)
|
||||||
|
+ -d, --debuginfo <DEBUGINFO>... Debuginfo package(s)
|
||||||
|
+ -p, --patch <PATCH>... Patch file(s)
|
||||||
|
+ --build-root <BUILD_ROOT> Build directory [default: .]
|
||||||
|
+ -o, --output <OUTPUT> Output directory [default: .]
|
||||||
|
+ -j, --jobs <JOBS> Parallel build jobs [default: 20]
|
||||||
|
+ --skip-compiler-check Skip compiler version check (not recommended)
|
||||||
|
+ --skip-cleanup Skip post-build cleanup
|
||||||
|
+ -v, --verbose Provide more detailed info
|
||||||
|
+ -h, --help Print help information
|
||||||
|
+ -V, --version Print version information
|
||||||
|
```
|
||||||
|
|
||||||
|
-### 参数
|
||||||
|
-|名称|描述|类型|备注|
|
||||||
|
-| ---- | ---- | ---- | ---- |
|
||||||
|
-| ```<PATCHES>```... |补丁文件路径|字符串|必选参数,可指定多个,需为合法路径|
|
||||||
|
-
|
||||||
|
### 选项
|
||||||
|
|名称|描述|类型|备注|
|
||||||
|
| ---- | ---- | ---- | ---- |
|
||||||
|
@@ -45,9 +40,11 @@ Options:
|
||||||
|
|--patch-version ```<PATCH_VERSION>```|补丁版本号|字符串|默认值为1,需符合RPM命名规范|
|
||||||
|
|--patch-release ```<PATCH_RELEASE>```|补丁release|数字|默认值为1,需符合RPM命名规范|
|
||||||
|
|--patch-description ```<PATCH_DESCRIPTION>```|补丁描述|字符串|默认为(none)|
|
||||||
|
+|--patch-requires ```<PATCH_REQUIRES>```|补丁依赖|字符串|默认为(none)|
|
||||||
|
|-s, --source ```<SOURCE>```|目标软件src.rpm源码包路径|字符串|必选参数,需为合法路径|
|
||||||
|
|-d, --debuginfo ```<DEBUGINFO>```|目标软件debuginfo包路径|字符串|必选参数,需为合法路径|
|
||||||
|
-|--workdir ```<WORKDIR>```|临时文件夹路径|字符串|默认为当前执行目录,需为合法路径|
|
||||||
|
+|-p, --patch ```<PATCH>```|目标软件debuginfo包路径|字符串|必选参数,需为合法路径|
|
||||||
|
+|--build-root ```<BUILD_ROOT>```|编译临时目录|字符串|默认为当前执行目录|
|
||||||
|
|-o, --output ```<OUTPUT>```|补丁输出文件夹|字符串|默认为当前执行目录,需为合法路径|
|
||||||
|
|-j, --jobs ```<N>```|并行编译线程数|数字|默认为cpu线程数|
|
||||||
|
|--skip-compiler-check|跳过编译器检查|标识|-|
|
||||||
|
@@ -103,17 +100,19 @@ syscare build \
|
||||||
|
| arch | 补丁架构 |
|
||||||
|
| type | 补丁类型 |
|
||||||
|
| target | 目标软件名 |
|
||||||
|
-| target_elf | 目标软件可执行文件名称 |
|
||||||
|
-| digest | 补丁指纹 |
|
||||||
|
| license | 目标软件许可证 |
|
||||||
|
| description | 补丁描述 |
|
||||||
|
-| patch| 补丁文件列表 |
|
||||||
|
+| entities | 补丁实体列表 |
|
||||||
|
+| patch | 补丁文件列表 |
|
||||||
|
|
||||||
|
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-dev@openeuler-dev:[output]$ syscare info redis-6.2.5-1/HP001
|
||||||
|
+dev@dev-x86:[output]$ syscare info redis-6.2.5-1/HP001-1-1
|
||||||
|
+---------------------------------------------------
|
||||||
|
+Patch: redis-6.2.5-1/HP001-1-1
|
||||||
|
+---------------------------------------------------
|
||||||
|
uuid: ec503257-aa75-4abc-9045-c4afdd7ae0f2
|
||||||
|
name: HP001
|
||||||
|
version: 1
|
||||||
|
@@ -121,12 +120,15 @@ release: 1
|
||||||
|
arch: x86_64
|
||||||
|
type: UserPatch
|
||||||
|
target: redis-6.2.5-1
|
||||||
|
-target_elf: redis-cli, redis-server, redis-benchmark
|
||||||
|
-digest: 31fc7544
|
||||||
|
license: BSD and MIT
|
||||||
|
description: CVE-2021-32675 - When parsing an incoming Redis Standard Protocol (RESP) request, Redis allocates memory according to user-specified values which determine the number of elements (in the multi-bulk header) and size of each element (in the bulk header). An attacker delivering specially crafted requests over multiple connections can cause the server to allocate significant amount of memory. Because the same parsing mechanism is used to handle authentication requests, this vulnerability can also be exploited by unauthenticated users.
|
||||||
|
+entities:
|
||||||
|
+* redis-server
|
||||||
|
+* redis-cli
|
||||||
|
+* redis-benchmark
|
||||||
|
patch:
|
||||||
|
-31fc7544 0001-Prevent-unauthenticated-client-from-easily-consuming.patch
|
||||||
|
+* 0001-Prevent-unauthenticated-client-from-easily-consuming.patch
|
||||||
|
+---------------------------------------------------
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@@ -156,7 +158,7 @@ patch:
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
- syscare-build \
|
||||||
|
+ syscare build \
|
||||||
|
--patch-name HP001 \
|
||||||
|
--source kernel-5.10.0-60.66.0.91.oe2203.src.rpm \
|
||||||
|
--debuginfo kernel-debuginfo-5.10.0-60.66.0.91.oe2203.x86_64.rpm \
|
||||||
|
@@ -164,12 +166,10 @@ patch:
|
||||||
|
001-kernel-patch-test.patch
|
||||||
|
```
|
||||||
|
|
||||||
|
- 补丁制作过程将会在由`--workdir`参数所指定的目录中(默认为当前目录)创建以```syscare-build```开头的临时文件夹,用于存放临时文件及编译日志。
|
||||||
|
-
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
- dev@openeuler-dev:[kernel_patch]$ ls -l syscare-build.111602/
|
||||||
|
+ dev@dev-x86:[kernel_patch]$ ls -l syscare-build.111602/
|
||||||
|
total 100
|
||||||
|
-rw-r--r--. 1 dev dev 92303 Nov 12 00:00 build.log
|
||||||
|
drwxr-xr-x. 6 dev dev 4096 Nov 12 00:00 package
|
||||||
|
@@ -177,7 +177,7 @@ patch:
|
||||||
|
```
|
||||||
|
编译日志将会生成在临时文件夹中,名称为```build.log```
|
||||||
|
```bash
|
||||||
|
- dev@openeuler-dev:[kernel_patch]$ cat syscare-build.111602/build.log | less
|
||||||
|
+ dev@dev-x86:[kernel_patch]$ cat syscare-build.111602/build.log | less
|
||||||
|
...
|
||||||
|
```
|
||||||
|
若补丁制作成功,将不会保留该临时文件夹。
|
||||||
|
@@ -187,7 +187,7 @@ patch:
|
||||||
|
示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
- dev@openeuler-dev:[output]$ ll
|
||||||
|
+ dev@dev-x86:[output]$ ll
|
||||||
|
total 372M
|
||||||
|
-rw-r--r--. 1 dev dev 186M Nov 12 00:00 kernel-5.10.0-60.80.0.104.oe2203-HP001-1-1.x86_64.src.rpm
|
||||||
|
-rw-r--r--. 1 dev dev 11K Nov 12 00:00 patch-kernel-5.10.0-60.80.0.104.oe2203-HP001-1-1.x86_64.rpm
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
162
0006-syscared-support-saving-restoring-patch-status-by-op.patch
Normal file
162
0006-syscared-support-saving-restoring-patch-status-by-op.patch
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
From d98892b0452499284fc577388cf8045af0ffa071 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Thu, 17 Oct 2024 22:24:21 +0800
|
||||||
|
Subject: [PATCH] syscared: support saving & restoring patch status by
|
||||||
|
operation order
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscared/Cargo.toml | 2 +-
|
||||||
|
syscared/src/patch/manager.rs | 84 ++++++++++++-----------------------
|
||||||
|
2 files changed, 30 insertions(+), 56 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscared/Cargo.toml b/syscared/Cargo.toml
|
||||||
|
index 1bfd43f..2eecea8 100644
|
||||||
|
--- a/syscared/Cargo.toml
|
||||||
|
+++ b/syscared/Cargo.toml
|
||||||
|
@@ -16,7 +16,7 @@ clap = { version = "3.2", features = ["cargo", "derive"] }
|
||||||
|
daemonize = { version = "0.5" }
|
||||||
|
flexi_logger = { version = "0.24", features = ["compress"] }
|
||||||
|
inotify = { version = "0.9" }
|
||||||
|
-indexmap = { version = "1.9" }
|
||||||
|
+indexmap = { version = "1.9", features = ["serde"] }
|
||||||
|
jsonrpc-core = { version = "18.0" }
|
||||||
|
jsonrpc-derive = { version = "18.0" }
|
||||||
|
jsonrpc-ipc-server = { version = "18.0" }
|
||||||
|
diff --git a/syscared/src/patch/manager.rs b/syscared/src/patch/manager.rs
|
||||||
|
index a17703c..48c583a 100644
|
||||||
|
--- a/syscared/src/patch/manager.rs
|
||||||
|
+++ b/syscared/src/patch/manager.rs
|
||||||
|
@@ -13,8 +13,6 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
use std::{
|
||||||
|
- cmp::Ordering,
|
||||||
|
- collections::HashMap,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
str::FromStr,
|
||||||
|
sync::Arc,
|
||||||
|
@@ -221,19 +219,16 @@ impl PatchManager {
|
||||||
|
pub fn save_patch_status(&mut self) -> Result<()> {
|
||||||
|
info!("Saving all patch status...");
|
||||||
|
|
||||||
|
- debug!("Updating all patch status...");
|
||||||
|
+ debug!("Updating patch status...");
|
||||||
|
for patch in self.get_patch_list() {
|
||||||
|
- debug!("Update patch '{}' status", patch);
|
||||||
|
self.get_patch_status(&patch)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
- let mut status_map = HashMap::new();
|
||||||
|
+ debug!("Writing patch status...");
|
||||||
|
for (uuid, status) in &self.status_map {
|
||||||
|
- status_map.insert(uuid, status);
|
||||||
|
+ debug!("Patch '{}' status: {}", uuid, status);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- debug!("Writing patch status file");
|
||||||
|
- serde::serialize(&status_map, &self.patch_status_file)
|
||||||
|
+ serde::serialize(&self.status_map, &self.patch_status_file)
|
||||||
|
.context("Failed to write patch status file")?;
|
||||||
|
|
||||||
|
fs::sync();
|
||||||
|
@@ -244,57 +239,35 @@ impl PatchManager {
|
||||||
|
|
||||||
|
pub fn restore_patch_status(&mut self, accepted_only: bool) -> Result<()> {
|
||||||
|
info!("Restoring all patch status...");
|
||||||
|
+ if !self.patch_status_file.exists() {
|
||||||
|
+ return Ok(());
|
||||||
|
+ }
|
||||||
|
|
||||||
|
debug!("Reading patch status...");
|
||||||
|
- let status_file = &self.patch_status_file;
|
||||||
|
- let status_map: HashMap<Uuid, PatchStatus> = if status_file.exists() {
|
||||||
|
- serde::deserialize(status_file).context("Failed to read patch status")?
|
||||||
|
- } else {
|
||||||
|
- warn!("Cannot find patch status file");
|
||||||
|
- return Ok(());
|
||||||
|
- };
|
||||||
|
+ let status_map: IndexMap<Uuid, PatchStatus> =
|
||||||
|
+ serde::deserialize(&self.patch_status_file).context("Failed to read patch status")?;
|
||||||
|
+ for (uuid, status) in &status_map {
|
||||||
|
+ debug!("Patch '{}' status: {}", uuid, status);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- /*
|
||||||
|
- * To ensure that we won't load multiple patches for same target at the same time,
|
||||||
|
- * we take a sort operation of the status to make sure do REMOVE operation at first
|
||||||
|
- */
|
||||||
|
- let mut restore_list = status_map
|
||||||
|
+ let restore_list = status_map
|
||||||
|
.into_iter()
|
||||||
|
- .filter_map(|(uuid, status)| match self.find_patch_by_uuid(&uuid) {
|
||||||
|
+ .filter(|(_, status)| !accepted_only || (*status == PatchStatus::Accepted));
|
||||||
|
+ for (uuid, status) in restore_list {
|
||||||
|
+ match self.find_patch_by_uuid(&uuid) {
|
||||||
|
Ok(patch) => {
|
||||||
|
- if accepted_only && (status != PatchStatus::Accepted) {
|
||||||
|
- debug!(
|
||||||
|
- "Skipped patch '{}', status is not '{}'",
|
||||||
|
- patch,
|
||||||
|
- PatchStatus::Accepted
|
||||||
|
- );
|
||||||
|
- return None;
|
||||||
|
+ debug!("Restore patch '{}' status to '{}'", patch, status);
|
||||||
|
+ if let Err(e) = self.do_status_transition(&patch, status, PatchOpFlag::Force) {
|
||||||
|
+ error!("{}", e);
|
||||||
|
}
|
||||||
|
- Some((patch, status))
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
- error!("{:?}", e);
|
||||||
|
- None
|
||||||
|
+ error!("{}", e);
|
||||||
|
}
|
||||||
|
- })
|
||||||
|
- .collect::<Vec<_>>();
|
||||||
|
-
|
||||||
|
- restore_list.sort_by(|(lhs_patch, lhs_status), (rhs_patch, rhs_status)| {
|
||||||
|
- match lhs_status.cmp(rhs_status) {
|
||||||
|
- Ordering::Less => Ordering::Less,
|
||||||
|
- Ordering::Equal => lhs_patch.cmp(rhs_patch),
|
||||||
|
- Ordering::Greater => Ordering::Greater,
|
||||||
|
- }
|
||||||
|
- });
|
||||||
|
-
|
||||||
|
- for (patch, target_status) in restore_list {
|
||||||
|
- debug!("Restore patch '{}' status to '{}'", patch, target_status);
|
||||||
|
- if let Err(e) = self.do_status_transition(&patch, target_status, PatchOpFlag::Force) {
|
||||||
|
- error!("{}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- info!("All patch status were restored");
|
||||||
|
|
||||||
|
+ info!("All patch status were restored");
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -426,13 +399,14 @@ impl PatchManager {
|
||||||
|
bail!("Cannot set patch '{}' status to '{}'", patch, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
- let status_map = &mut self.status_map;
|
||||||
|
- match status_map.get_mut(patch.uuid()) {
|
||||||
|
- Some(status) => {
|
||||||
|
- *status = value;
|
||||||
|
- }
|
||||||
|
- None => {
|
||||||
|
- status_map.insert(*patch.uuid(), value);
|
||||||
|
+ let (index, _) = self.status_map.insert_full(*patch.uuid(), value);
|
||||||
|
+ if let Some(last_index) = self
|
||||||
|
+ .status_map
|
||||||
|
+ .last()
|
||||||
|
+ .and_then(|(key, _)| self.status_map.get_index_of(key))
|
||||||
|
+ {
|
||||||
|
+ if index != last_index {
|
||||||
|
+ self.status_map.move_index(index, last_index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
34
0007-project-update-Cargo.lock.patch
Normal file
34
0007-project-update-Cargo.lock.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From ad418b6d9f30bda58488da27257efe10ca2906e3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Thu, 17 Oct 2024 23:15:46 +0800
|
||||||
|
Subject: [PATCH] project: update Cargo.lock
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
Cargo.lock | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Cargo.lock b/Cargo.lock
|
||||||
|
index 48ca061..30f2015 100644
|
||||||
|
--- a/Cargo.lock
|
||||||
|
+++ b/Cargo.lock
|
||||||
|
@@ -511,6 +511,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"hashbrown",
|
||||||
|
+ "serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
@@ -1337,7 +1338,7 @@ name = "upatch-helper"
|
||||||
|
version = "1.2.2"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
- "syscare-common",
|
||||||
|
+ "uuid",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
74
0008-all-remove-signal-handler.patch
Normal file
74
0008-all-remove-signal-handler.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
From 5daf18084f8d2865db24b6627d2d28d9234bcf5c Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Mon, 10 Feb 2025 10:49:49 +0800
|
||||||
|
Subject: [PATCH] all: remove signal handler
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscare-build/Cargo.toml | 1 -
|
||||||
|
syscare-build/src/main.rs | 6 ------
|
||||||
|
upatch-build/Cargo.toml | 1 -
|
||||||
|
upatch-build/src/main.rs | 6 ------
|
||||||
|
4 files changed, 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscare-build/Cargo.toml b/syscare-build/Cargo.toml
|
||||||
|
index 558b2bc..ba4d1c8 100644
|
||||||
|
--- a/syscare-build/Cargo.toml
|
||||||
|
+++ b/syscare-build/Cargo.toml
|
||||||
|
@@ -14,7 +14,6 @@ syscare-common = { package = "syscare-common", path = "../syscare-common" }
|
||||||
|
anyhow = { version = "1.0" }
|
||||||
|
clap = { version = "3.2", features = ["derive"] }
|
||||||
|
chrono = { version = "0.4" }
|
||||||
|
-ctrlc = { version = "3.3" }
|
||||||
|
flexi_logger = { version = "0.24" }
|
||||||
|
lazy_static = { version = "1.0" }
|
||||||
|
log = { version = "0.4" }
|
||||||
|
diff --git a/syscare-build/src/main.rs b/syscare-build/src/main.rs
|
||||||
|
index 2fb714d..64363bf 100644
|
||||||
|
--- a/syscare-build/src/main.rs
|
||||||
|
+++ b/syscare-build/src/main.rs
|
||||||
|
@@ -103,12 +103,6 @@ impl SyscareBuild {
|
||||||
|
.start()
|
||||||
|
.context("Failed to initialize logger")?;
|
||||||
|
|
||||||
|
- // Initialize signal handler
|
||||||
|
- ctrlc::set_handler(|| {
|
||||||
|
- eprintln!("Interrupt");
|
||||||
|
- })
|
||||||
|
- .context("Failed to initialize signal handler")?;
|
||||||
|
-
|
||||||
|
Ok(Self {
|
||||||
|
args,
|
||||||
|
logger,
|
||||||
|
diff --git a/upatch-build/Cargo.toml b/upatch-build/Cargo.toml
|
||||||
|
index 5123149..88d88b3 100644
|
||||||
|
--- a/upatch-build/Cargo.toml
|
||||||
|
+++ b/upatch-build/Cargo.toml
|
||||||
|
@@ -12,7 +12,6 @@ build = "build.rs"
|
||||||
|
syscare-common = { package = "syscare-common", path = "../syscare-common" }
|
||||||
|
anyhow = { version = "1.0" }
|
||||||
|
clap = { version = "3.2", features = ["cargo", "derive"] }
|
||||||
|
-ctrlc = { version = "3.3" }
|
||||||
|
flexi_logger = { version = "0.24" }
|
||||||
|
function_name = { version = "0.3" }
|
||||||
|
gimli = { version = "0.26" }
|
||||||
|
diff --git a/upatch-build/src/main.rs b/upatch-build/src/main.rs
|
||||||
|
index 77b256a..09f907b 100644
|
||||||
|
--- a/upatch-build/src/main.rs
|
||||||
|
+++ b/upatch-build/src/main.rs
|
||||||
|
@@ -98,12 +98,6 @@ impl UpatchBuild {
|
||||||
|
.start()
|
||||||
|
.context("Failed to initialize logger")?;
|
||||||
|
|
||||||
|
- // Initialize signal handler
|
||||||
|
- ctrlc::set_handler(|| {
|
||||||
|
- eprintln!("Interrupt");
|
||||||
|
- })
|
||||||
|
- .context("Failed to initialize signal handler")?;
|
||||||
|
-
|
||||||
|
Ok(Self {
|
||||||
|
args,
|
||||||
|
logger,
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
66
0009-project-update-Cargo.lock.patch
Normal file
66
0009-project-update-Cargo.lock.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
From bed35b84e7cbeaafd16c9c01650243ae548a9c14 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Mon, 10 Feb 2025 11:49:40 +0800
|
||||||
|
Subject: [PATCH] project: update Cargo.lock
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
Cargo.lock | 21 ---------------------
|
||||||
|
1 file changed, 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Cargo.lock b/Cargo.lock
|
||||||
|
index 30f2015..6ae9f36 100644
|
||||||
|
--- a/Cargo.lock
|
||||||
|
+++ b/Cargo.lock
|
||||||
|
@@ -210,16 +210,6 @@ dependencies = [
|
||||||
|
"typenum",
|
||||||
|
]
|
||||||
|
|
||||||
|
-[[package]]
|
||||||
|
-name = "ctrlc"
|
||||||
|
-version = "3.3.0"
|
||||||
|
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
-checksum = "04d778600249295e82b6ab12e291ed9029407efee0cfb7baf67157edc65964df"
|
||||||
|
-dependencies = [
|
||||||
|
- "nix",
|
||||||
|
- "windows-sys",
|
||||||
|
-]
|
||||||
|
-
|
||||||
|
[[package]]
|
||||||
|
name = "daemonize"
|
||||||
|
version = "0.5.0"
|
||||||
|
@@ -1140,7 +1130,6 @@ dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"chrono",
|
||||||
|
"clap",
|
||||||
|
- "ctrlc",
|
||||||
|
"flexi_logger",
|
||||||
|
"lazy_static",
|
||||||
|
"log",
|
||||||
|
@@ -1317,7 +1306,6 @@ version = "1.2.2"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"clap",
|
||||||
|
- "ctrlc",
|
||||||
|
"flexi_logger",
|
||||||
|
"function_name",
|
||||||
|
"gimli",
|
||||||
|
@@ -1474,15 +1462,6 @@ dependencies = [
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
|
-[[package]]
|
||||||
|
-name = "windows-sys"
|
||||||
|
-version = "0.48.0"
|
||||||
|
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
||||||
|
-dependencies = [
|
||||||
|
- "windows-targets",
|
||||||
|
-]
|
||||||
|
-
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.48.5"
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
52
0010-syscare-remove-working-directory-check.patch
Normal file
52
0010-syscare-remove-working-directory-check.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
From 707475a7361b6f16ca2b9e62f222b1982a57e506 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Mon, 10 Feb 2025 14:21:29 +0800
|
||||||
|
Subject: [PATCH] syscare: remove working directory check
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscare/src/args.rs | 14 ++------------
|
||||||
|
1 file changed, 2 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscare/src/args.rs b/syscare/src/args.rs
|
||||||
|
index 4f034a0..5e7299d 100644
|
||||||
|
--- a/syscare/src/args.rs
|
||||||
|
+++ b/syscare/src/args.rs
|
||||||
|
@@ -14,7 +14,7 @@
|
||||||
|
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
-use anyhow::{ensure, Result};
|
||||||
|
+use anyhow::Result;
|
||||||
|
use clap::{AppSettings, ColorChoice, Parser, Subcommand};
|
||||||
|
|
||||||
|
use syscare_common::fs;
|
||||||
|
@@ -131,7 +131,7 @@ pub enum SubCommand {
|
||||||
|
|
||||||
|
impl Arguments {
|
||||||
|
pub fn new() -> Result<Self> {
|
||||||
|
- Self::parse().normalize_path().and_then(Self::check)
|
||||||
|
+ Self::parse().normalize_path()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn normalize_path(mut self) -> Result<Self> {
|
||||||
|
@@ -139,16 +139,6 @@ impl Arguments {
|
||||||
|
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- fn check(self) -> Result<Self> {
|
||||||
|
- let work_dir = &self.work_dir;
|
||||||
|
- ensure!(
|
||||||
|
- work_dir.is_dir(),
|
||||||
|
- format!("Cannot find directory {}", work_dir.display())
|
||||||
|
- );
|
||||||
|
-
|
||||||
|
- Ok(self)
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for Arguments {
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
162
0011-all-fix-cargo-clippy-warnings.patch
Normal file
162
0011-all-fix-cargo-clippy-warnings.patch
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
From 2af03514afcc797cac3125c7b04ee0f5eae43aa0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: renoseven <dev@renoseven.net>
|
||||||
|
Date: Mon, 10 Feb 2025 10:29:00 +0800
|
||||||
|
Subject: [PATCH] all: fix cargo clippy warnings
|
||||||
|
|
||||||
|
Signed-off-by: renoseven <dev@renoseven.net>
|
||||||
|
---
|
||||||
|
syscare-common/src/ffi/os_str.rs | 2 +-
|
||||||
|
syscare-common/src/fs/fs_impl.rs | 4 ++--
|
||||||
|
syscare-common/src/os_str/iter.rs | 2 +-
|
||||||
|
syscare-common/src/process/stdio.rs | 4 ++--
|
||||||
|
syscared/src/args.rs | 1 -
|
||||||
|
syscared/src/patch/resolver/kpatch.rs | 2 +-
|
||||||
|
syscared/src/patch/resolver/upatch.rs | 2 +-
|
||||||
|
upatch-build/src/dwarf/mod.rs | 6 +++---
|
||||||
|
upatch-build/src/dwarf/relocate.rs | 4 ++--
|
||||||
|
9 files changed, 13 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/syscare-common/src/ffi/os_str.rs b/syscare-common/src/ffi/os_str.rs
|
||||||
|
index 375ef82..0c414e1 100644
|
||||||
|
--- a/syscare-common/src/ffi/os_str.rs
|
||||||
|
+++ b/syscare-common/src/ffi/os_str.rs
|
||||||
|
@@ -119,7 +119,7 @@ pub trait OsStrExt: AsRef<OsStr> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- fn split<'a, P: Pattern<'a>>(&'a self, pat: P) -> Split<P> {
|
||||||
|
+ fn split<'a, P: Pattern<'a>>(&'a self, pat: P) -> Split<'a, P> {
|
||||||
|
let haystack = self.as_ref().as_bytes();
|
||||||
|
|
||||||
|
Split(SplitImpl {
|
||||||
|
diff --git a/syscare-common/src/fs/fs_impl.rs b/syscare-common/src/fs/fs_impl.rs
|
||||||
|
index 23f8493..30c11b7 100644
|
||||||
|
--- a/syscare-common/src/fs/fs_impl.rs
|
||||||
|
+++ b/syscare-common/src/fs/fs_impl.rs
|
||||||
|
@@ -379,10 +379,10 @@ where
|
||||||
|
if !file_type.is_file() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- return file_path
|
||||||
|
+ file_path
|
||||||
|
.extension()
|
||||||
|
.map(|s| s == ext.as_ref())
|
||||||
|
- .unwrap_or(false);
|
||||||
|
+ .unwrap_or(false)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/syscare-common/src/os_str/iter.rs b/syscare-common/src/os_str/iter.rs
|
||||||
|
index 2868c2e..e472d0c 100644
|
||||||
|
--- a/syscare-common/src/os_str/iter.rs
|
||||||
|
+++ b/syscare-common/src/os_str/iter.rs
|
||||||
|
@@ -165,7 +165,7 @@ impl<'a, P: Pattern<'a>> SplitImpl<'a, P> {
|
||||||
|
}
|
||||||
|
|
||||||
|
self.finished = true;
|
||||||
|
- return Some(OsStr::from_bytes(&haystack[self.position..]));
|
||||||
|
+ Some(OsStr::from_bytes(&haystack[self.position..]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/syscare-common/src/process/stdio.rs b/syscare-common/src/process/stdio.rs
|
||||||
|
index 450019a..9a93e56 100644
|
||||||
|
--- a/syscare-common/src/process/stdio.rs
|
||||||
|
+++ b/syscare-common/src/process/stdio.rs
|
||||||
|
@@ -160,10 +160,10 @@ impl Stdio {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- if stdout_buf.ends_with(&[b'\n']) {
|
||||||
|
+ if stdout_buf.ends_with(b"\n") {
|
||||||
|
stdout_buf.pop();
|
||||||
|
}
|
||||||
|
- if stderr_buf.ends_with(&[b'\n']) {
|
||||||
|
+ if stderr_buf.ends_with(b"\n") {
|
||||||
|
stderr_buf.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/syscared/src/args.rs b/syscared/src/args.rs
|
||||||
|
index 4c28dff..f98b54b 100644
|
||||||
|
--- a/syscared/src/args.rs
|
||||||
|
+++ b/syscared/src/args.rs
|
||||||
|
@@ -37,7 +37,6 @@ const DEFAULT_LOG_LEVEL: &str = "info";
|
||||||
|
global_setting(AppSettings::DeriveDisplayOrder),
|
||||||
|
term_width(120),
|
||||||
|
)]
|
||||||
|
-
|
||||||
|
pub struct Arguments {
|
||||||
|
/// Run as a daemon
|
||||||
|
#[clap(short, long)]
|
||||||
|
diff --git a/syscared/src/patch/resolver/kpatch.rs b/syscared/src/patch/resolver/kpatch.rs
|
||||||
|
index 85ec18e..863f65b 100644
|
||||||
|
--- a/syscared/src/patch/resolver/kpatch.rs
|
||||||
|
+++ b/syscared/src/patch/resolver/kpatch.rs
|
||||||
|
@@ -86,7 +86,7 @@ mod ffi {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- impl<'data, 'file, Elf: FileHeader> Iterator for KpatchRelocationIterator<'data, 'file, Elf> {
|
||||||
|
+ impl<Elf: FileHeader> Iterator for KpatchRelocationIterator<'_, '_, Elf> {
|
||||||
|
type Item = KpatchRelocation;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
diff --git a/syscared/src/patch/resolver/upatch.rs b/syscared/src/patch/resolver/upatch.rs
|
||||||
|
index e8c2f2c..e49dff9 100644
|
||||||
|
--- a/syscared/src/patch/resolver/upatch.rs
|
||||||
|
+++ b/syscared/src/patch/resolver/upatch.rs
|
||||||
|
@@ -73,7 +73,7 @@ mod ffi {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- impl<'data, 'file, Elf: FileHeader> Iterator for UpatchRelocationIterator<'data, 'file, Elf> {
|
||||||
|
+ impl<Elf: FileHeader> Iterator for UpatchRelocationIterator<'_, '_, Elf> {
|
||||||
|
type Item = UpatchRelocation;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
diff --git a/upatch-build/src/dwarf/mod.rs b/upatch-build/src/dwarf/mod.rs
|
||||||
|
index 0c172c5..4399b51 100644
|
||||||
|
--- a/upatch-build/src/dwarf/mod.rs
|
||||||
|
+++ b/upatch-build/src/dwarf/mod.rs
|
||||||
|
@@ -233,13 +233,13 @@ impl Dwarf {
|
||||||
|
while let Some(attr) = attrs.next()? {
|
||||||
|
match attr.name() {
|
||||||
|
constants::DW_AT_comp_dir => {
|
||||||
|
- element.compile_dir.push(&Self::attr_value(&attr, dwarf));
|
||||||
|
+ element.compile_dir.push(Self::attr_value(&attr, dwarf));
|
||||||
|
}
|
||||||
|
constants::DW_AT_name => {
|
||||||
|
- element.file_name.push(&Self::attr_value(&attr, dwarf));
|
||||||
|
+ element.file_name.push(Self::attr_value(&attr, dwarf));
|
||||||
|
}
|
||||||
|
constants::DW_AT_producer => {
|
||||||
|
- element.producer.push(&Self::attr_value(&attr, dwarf));
|
||||||
|
+ element.producer.push(Self::attr_value(&attr, dwarf));
|
||||||
|
}
|
||||||
|
_ => continue,
|
||||||
|
}
|
||||||
|
diff --git a/upatch-build/src/dwarf/relocate.rs b/upatch-build/src/dwarf/relocate.rs
|
||||||
|
index e8c7cdf..a6e8fb9 100644
|
||||||
|
--- a/upatch-build/src/dwarf/relocate.rs
|
||||||
|
+++ b/upatch-build/src/dwarf/relocate.rs
|
||||||
|
@@ -25,7 +25,7 @@ pub struct Relocate<'a, R: gimli::Reader<Offset = usize>> {
|
||||||
|
pub reader: R,
|
||||||
|
}
|
||||||
|
|
||||||
|
-impl<'a, R: gimli::Reader<Offset = usize>> Relocate<'a, R> {
|
||||||
|
+impl<R: gimli::Reader<Offset = usize>> Relocate<'_, R> {
|
||||||
|
pub fn relocate(&self, offset: usize, value: u64) -> u64 {
|
||||||
|
if let Some(relocation) = self.relocations.get(&offset) {
|
||||||
|
if relocation.kind() == object::RelocationKind::Absolute {
|
||||||
|
@@ -41,7 +41,7 @@ impl<'a, R: gimli::Reader<Offset = usize>> Relocate<'a, R> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-impl<'a, R: gimli::Reader<Offset = usize>> gimli::Reader for Relocate<'a, R> {
|
||||||
|
+impl<R: gimli::Reader<Offset = usize>> gimli::Reader for Relocate<'_, R> {
|
||||||
|
type Endian = R::Endian;
|
||||||
|
type Offset = R::Offset;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
Binary file not shown.
26
syscare.spec
26
syscare.spec
@ -5,7 +5,7 @@
|
|||||||
############################################
|
############################################
|
||||||
Name: syscare
|
Name: syscare
|
||||||
Version: 1.2.2
|
Version: 1.2.2
|
||||||
Release: 3
|
Release: 4
|
||||||
Summary: System hot-fix service
|
Summary: System hot-fix service
|
||||||
License: MulanPSL-2.0 and GPL-2.0-only
|
License: MulanPSL-2.0 and GPL-2.0-only
|
||||||
URL: https://gitee.com/openeuler/syscare
|
URL: https://gitee.com/openeuler/syscare
|
||||||
@ -19,6 +19,18 @@ Requires: kpatch-runtime
|
|||||||
|
|
||||||
Excludearch: loongarch64
|
Excludearch: loongarch64
|
||||||
|
|
||||||
|
Patch0001: 0001-fix-kernel-patch-ACCEPTED-change-to-DEACTIVED-after-.patch
|
||||||
|
Patch0002: 0002-fix-some-clean-code-problem.patch
|
||||||
|
Patch0003: 0003-syscared-fix-active-accepted-patch-failure-issue.patch
|
||||||
|
Patch0004: 0004-upatch-helper-fix-object-upatch-id-duplicated-issue.patch
|
||||||
|
Patch0005: 0005-syscare-build-update-README.md.patch
|
||||||
|
Patch0006: 0006-syscared-support-saving-restoring-patch-status-by-op.patch
|
||||||
|
Patch0007: 0007-project-update-Cargo.lock.patch
|
||||||
|
Patch0008: 0008-all-remove-signal-handler.patch
|
||||||
|
Patch0009: 0009-project-update-Cargo.lock.patch
|
||||||
|
Patch0010: 0010-syscare-remove-working-directory-check.patch
|
||||||
|
Patch0011: 0011-all-fix-cargo-clippy-warnings.patch
|
||||||
|
|
||||||
############### Description ################
|
############### Description ################
|
||||||
%description
|
%description
|
||||||
SysCare is a system-level hot-fix service that provides security patches and system error hot-fixes for the operating system.
|
SysCare is a system-level hot-fix service that provides security patches and system error hot-fixes for the operating system.
|
||||||
@ -124,6 +136,18 @@ Syscare patch building toolset.
|
|||||||
################ Change log ################
|
################ Change log ################
|
||||||
############################################
|
############################################
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 20 2025 renoseven<dev@renoseven.net> - 1.2.2-4
|
||||||
|
- all: fix rust 1.84 compile failure
|
||||||
|
- syscare: fix cannot find working directory
|
||||||
|
- syscare-build: fix set signal handler failure
|
||||||
|
- syscared: fix active accepted patch failure
|
||||||
|
|
||||||
* Mon Nov 11 2024 renoseven<dev@renoseven.net> - 1.2.2-3
|
* Mon Nov 11 2024 renoseven<dev@renoseven.net> - 1.2.2-3
|
||||||
- syscared: support saving & restoring patch status by operation order
|
- syscared: support saving & restoring patch status by operation order
|
||||||
|
|
||||||
|
* Wed Sep 18 2024 renoseven<dev@renoseven.net> - 1.2.2-2
|
||||||
|
- syscared: fix kernel patch apply failure issue
|
||||||
|
- upatch-helper: fix object upatch id duplicated issue
|
||||||
|
|
||||||
|
* Fri Aug 16 2024 renoseven<dev@renoseven.net> - 1.2.2-1
|
||||||
|
- Release version 1.2.2-1.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user