summaryrefslogtreecommitdiff
path: root/lib/zlib_dfltcc
diff options
context:
space:
mode:
authorMikhail Zaslonko <zaslonko@linux.ibm.com>2023-01-26 14:14:28 +0100
committerAndrew Morton <akpm@linux-foundation.org>2023-02-02 22:50:09 -0800
commitf65c35d3336ec8c7af6e12b7fd15acfb4b8e9ffa (patch)
treecb56b49f8705795624f5f01ec369e657d87c297c /lib/zlib_dfltcc
parent9010dbc007b853ed55905e40fa8e9d39fcb75935 (diff)
lib/zlib: DFLTCC always switch to software inflate for Z_PACKET_FLUSH option
Since hardware inflate does not support Z_PACKET_FLUSH option (used exclusively by kernel PPP driver), always switch to software like we already do for Z_BLOCK flush option. Without this patch, PPP might get Z_DATA_ERROR return code from zlib_inflate() and disable zlib compression for the packets. Link: https://lkml.kernel.org/r/20230126131428.1222214-9-zaslonko@linux.ibm.com Signed-off-by: Mikhail Zaslonko <zaslonko@linux.ibm.com> Acked-by: Ilya Leoshkevich <iii@linux.ibm.com> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'lib/zlib_dfltcc')
-rw-r--r--lib/zlib_dfltcc/dfltcc_inflate.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/zlib_dfltcc/dfltcc_inflate.c b/lib/zlib_dfltcc/dfltcc_inflate.c
index 5786030c6dc2..437cd34c8490 100644
--- a/lib/zlib_dfltcc/dfltcc_inflate.c
+++ b/lib/zlib_dfltcc/dfltcc_inflate.c
@@ -95,8 +95,10 @@ dfltcc_inflate_action dfltcc_inflate(
struct dfltcc_param_v0 *param = &dfltcc_state->param;
dfltcc_cc cc;
- if (flush == Z_BLOCK) {
- /* DFLTCC does not support stopping on block boundaries */
+ if (flush == Z_BLOCK || flush == Z_PACKET_FLUSH) {
+ /* DFLTCC does not support stopping on block boundaries (Z_BLOCK flush option)
+ * as well as the use of Z_PACKET_FLUSH option (used exclusively by PPP driver)
+ */
if (dfltcc_inflate_disable(strm)) {
*ret = Z_STREAM_ERROR;
return DFLTCC_INFLATE_BREAK;