-
-
Notifications
You must be signed in to change notification settings - Fork 168
refactor(net): 重构网络系统调用为syscall table机制 #1551
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(net): 重构网络系统调用为syscall table机制 #1551
Conversation
fslongjin
commented
Dec 24, 2025
- 将单个syscall.rs文件拆分为模块化结构,每个系统调用独立文件
- 新增syscall/mod.rs作为模块入口,统一导出所有网络系统调用处理器
- 实现Syscall trait的统一接口,支持参数格式化和错误处理
- 移除原syscall.rs中的网络系统调用实现,迁移至新架构
- 保持原有功能不变,仅重构代码组织结构
- 将单个syscall.rs文件拆分为模块化结构,每个系统调用独立文件 - 新增syscall/mod.rs作为模块入口,统一导出所有网络系统调用处理器 - 实现Syscall trait的统一接口,支持参数格式化和错误处理 - 移除原syscall.rs中的网络系统调用实现,迁移至新架构 - 保持原有功能不变,仅重构代码组织结构 Signed-off-by: longjin <longjin@DragonOS.org>
|
@claude review this PR in Chinese |
|
Claude finished @fslongjin's task in 5m 19s —— View job Claude代码审核完成我已经完成了对PR #1551的代码审核。以下是详细的审核反馈: 总体评价本次重构将单个 主要优点
潜在问题和改进建议1. 用户空间指针验证不一致问题:部分系统调用缺少对用户空间指针的充分验证,可能存在安全隐患。
2. 错误处理一致性问题:部分错误处理可以进一步优化。
3. 代码重复问题:多个系统调用文件中有相似的参数提取方法模式(如 建议:可以评估是否值得引入辅助宏来生成标准的参数提取方法,但这属于优化项,非必需。 4. 边界检查问题:部分系统调用对参数数量的假设依赖 建议:在 if args.len() < self.num_args() {
return Err(SystemError::EINVAL);
}具体问题详情文件级问题:
架构级问题:
测试建议由于这是重构,功能应保持不变,建议:
总结本次重构是成功的,代码质量总体良好。主要需要关注的是用户空间指针验证的一致性问题,特别是 其他问题属于优化项,可以在后续迭代中改进。 审核状态:✅ 基本通过,建议修复安全相关问题后合并 优先级:
审核由Claude执行,基于PR #1551的代码变更分析。 |
| /// Flags for accept4 | ||
| const SOCK_CLOEXEC: FileFlags = FileFlags::O_CLOEXEC; | ||
| const SOCK_NONBLOCK: FileFlags = FileFlags::O_NONBLOCK; | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
要避免使用这里类似的这种写法。底下直接比对即可。
| return Err(SystemError::EINVAL); | ||
| } | ||
|
|
||
| if SOCK_NONBLOCK != FileFlags::O_NONBLOCK && ((flags & SOCK_NONBLOCK.bits()) != 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SOCK_NONBLOCK != FileFlags::O_NONBLOCK 这种无意义的代码,要检查下
- 在Endpoint::write_to_user中替换verify_area为UserBufferReader/Writer - 移除accept/accept4中冗余的SOCK_CLOEXEC和SOCK_NONBLOCK常量定义 - 在getsockopt中增加optval长度限制并统一使用UserBufferReader/Writer Signed-off-by: longjin <longjin@DragonOS.org>