fix from_process_at return error in old kernel#241
Open
qq906907952 wants to merge 1 commit intoeminence:masterfrom
Open
fix from_process_at return error in old kernel#241qq906907952 wants to merge 1 commit intoeminence:masterfrom
qq906907952 wants to merge 1 commit intoeminence:masterfrom
Conversation
remove unused field `root` in struct FDsIter
Owner
|
Hi, thanks for the bug report, and for the potential fix. I would like to be able to support 2.6 kernels, but getting ahold of one for testing is a bit challenging. I need to do some more research to understand the impact of removing |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In the function "FDInfo::from_process_at" it use "rustix::fs::openat" to open file like "/proc/{pid}/fd/x"
which will encounter the 'Os { code: 40, kind: FilesystemLoop, message: "Symbolic link loop" }' error in old version kernel
(test in 2.6.32-696.16.1.el6.x86_64, i guess the some flag not handle correct or not support in old kernel version, espcially SYMLINK_NOFOLLOW)
when i remove SYMLINK_NOFOLLOW flag in openat , "rustix::fs::openat" raise 'Os { code: 6, kind: Uncategorized, message: "No such device or address" }' error
it also encounter 'Os { code: 22, kind: InvalidInput, message: "Invalid argument" }' when get metadata use
rustix::fs::statatwith flags.so i remove the "rustix::fs::openat" and remove all AtFlags in "rustix::fs::statat". only use "rustix::fs::readlinkat" and "rustix::fs::statat" to get the fd type and metadata
also remove the unused field "root" in struct FDsIter
it work in old kernel (i only test in 2.6.32-696.16.1.el6.x86_64) and new kernel