Bug 2140084
Summary: | SIGSEGV: segmentation violation on s390x | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 8 | Reporter: | Alex Jia <ajia> | |
Component: | podman | Assignee: | Jindrich Novy <jnovy> | |
Status: | CLOSED ERRATA | QA Contact: | Yuhui Jiang <yujiang> | |
Severity: | medium | Docs Contact: | ||
Priority: | high | |||
Version: | 8.7 | CC: | bbaude, dwalsh, jligon, jnovy, lsm5, mheon, pthomas, tsweeney, umohnani, ypu | |
Target Milestone: | rc | Keywords: | Triaged, ZStream | |
Target Release: | --- | |||
Hardware: | x86_64 | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | podman-4.4.0-1.el8 | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 2140087 2150416 2150430 (view as bug list) | Environment: | ||
Last Closed: | 2023-05-16 08:22:22 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 2140087, 2150416, 2150429, 2150430 |
Comment 3
Jindrich Novy
2022-12-01 12:17:19 UTC
It's been picked up in both branches, but not by that commit (it got grabbed by a vendor of a newer version of the storage library). I can see the actual code change we wanted is present in Podman's vendored c/storage for both main and 4.3.1. I might be wrong but what I see in podman-4.3.1 is missing at least the essential s390x conditional in vendor/github.com/containers/storage/drivers/overlay/idmapped_utils.go: @@ -124,7 +125,14 @@ func createIDMappedMount(source, target string, pid int) error { // createUsernsProcess forks the current process and creates a user namespace using the specified // mappings. It returns the pid of the new process. func createUsernsProcess(uidMaps []idtools.IDMap, gidMaps []idtools.IDMap) (int, func(), error) { - pid, _, err := syscall.Syscall6(uintptr(unix.SYS_CLONE), unix.CLONE_NEWUSER|uintptr(unix.SIGCHLD), 0, 0, 0, 0, 0) + var pid uintptr + var err syscall.Errno + + if runtime.GOARCH == "s390x" { + pid, _, err = syscall.Syscall6(uintptr(unix.SYS_CLONE), 0, unix.CLONE_NEWUSER|uintptr(unix.SIGCHLD), 0, 0, 0, 0) + } else { + pid, _, err = syscall.Syscall6(uintptr(unix.SYS_CLONE), unix.CLONE_NEWUSER|uintptr(unix.SIGCHLD), 0, 0, 0, 0, 0) + } if err != 0 { return -1, nil, err } c/storage 1.43.0 is missing this bit too. The first c/storage containing this is c/storage 1.44.0. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: container-tools:rhel8 security, bug fix, and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2023:2758 The needinfo request[s] on this closed bug have been removed as they have been unresolved for 120 days |