[Ubuntu 20.04] zlib: inflateSyncPoint() returns an incorrect result on z15
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu on IBM z Systems |
Fix Released
|
High
|
Skipper Bug Screeners | ||
zlib (Ubuntu) |
Fix Released
|
Critical
|
Skipper Bug Screeners | ||
Focal |
Fix Released
|
Critical
|
Unassigned | ||
Groovy |
Fix Released
|
Critical
|
Skipper Bug Screeners |
Bug Description
Description: zlib: inflateSyncPoint() returns an incorrect result on z15
Symptom: Certain rsync builds fail with "error in rsync protocol data
Problem: inflateSyncPoint() does not take into account the hardware
Solution: Make inflateSyncPoint() fail if the hardware compression is on.
The hardware does not provide enough information in order to
[Impact]
* Certain rsync builds fail with "error in rsync protocol data stream" on z15.
* On ubuntu, rsync normally uses zstd or lz4. But when rsync is forced to use non-default zlib compression (-z flag) it uses inflateSyncPoint() API. This can also happen when rsync on the the other end doesn't support zstd & lz4.
* inflateSyncPoint() does not take into account the hardware compression state and returns an incorrect result.
* Make inflateSyncPoint() fail if the hardware compression is on. The hardware does not provide enough information in order to implement this function.
* Above makes rsync to succeed, when zlib uses hardware compression.
[Test Case]
Reproduction: z15 only: printf 1 >1 && rsync -z 1 2
[Regression Potential]
* inflateSyncPoint API is rarely used. Scanning codesearch, there is a lot of false positives due to embedded copies of zlib in all the things. I do see that both rsync and backuppc-rsync use it. It used during a safety check to ensure that algorithm is not at a sync point (or that cannot be determined). Nonetheless, returning error is a safer implementation for this API call.
[Other Info]
* This is a regression introduced by adding & enabling zlib hw acceleration by default on z15; and discovering using rsync that one API is implemented incorrectly.
Changed in ubuntu-z-systems: | |
importance: | Undecided → High |
Changed in zlib (Ubuntu Groovy): | |
importance: | Undecided → Critical |
Changed in zlib (Ubuntu Focal): | |
importance: | Undecided → Critical |
Changed in zlib (Ubuntu Groovy): | |
milestone: | none → ubuntu-20.10 |
Changed in zlib (Ubuntu Focal): | |
milestone: | none → focal-updates |
Changed in ubuntu-z-systems: | |
assignee: | nobody → Skipper Bug Screeners (skipper-screen-team) |
Changed in zlib (Ubuntu Groovy): | |
milestone: | ubuntu-20.10 → groovy-updates |
description: | updated |
description: | updated |
Changed in zlib (Ubuntu Focal): | |
status: | New → In Progress |
Changed in zlib (Ubuntu Groovy): | |
status: | New → In Progress |
Changed in ubuntu-z-systems: | |
status: | New → In Progress |
no longer affects: | ubuntu-release-notes |
Changed in ubuntu-z-systems: | |
status: | Fix Committed → Fix Released |
Default Comment by Bridge