Commit f65c35d3 authored by Mikhail Zaslonko's avatar Mikhail Zaslonko Committed by Andrew Morton
Browse files

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: default avatarMikhail Zaslonko <zaslonko@linux.ibm.com>
Acked-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 9010dbc0
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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;