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: | --- | Flags: | pm-rhel:
mirror+
|
|
| 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 |