diff options
| -rw-r--r-- | fs/smb/client/compress/lz77.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/smb/client/compress/lz77.c b/fs/smb/client/compress/lz77.c index 96e8a8057a77..e32a9bd9a94f 100644 --- a/fs/smb/client/compress/lz77.c +++ b/fs/smb/client/compress/lz77.c @@ -51,11 +51,11 @@ static __always_inline void lz77_write32(u32 *ptr, u32 v) static __always_inline u32 lz77_match_len(const void *wnd, const void *cur, const void *end) { const void *start = cur; - u64 diff; /* Safe for a do/while because otherwise we wouldn't reach here from the main loop. */ do { - diff = lz77_read64(cur) ^ lz77_read64(wnd); + const u64 diff = lz77_read64(cur) ^ lz77_read64(wnd); + if (!diff) { cur += LZ77_STEP_SIZE; wnd += LZ77_STEP_SIZE; @@ -69,8 +69,10 @@ static __always_inline u32 lz77_match_len(const void *wnd, const void *cur, cons return (cur - start); } while (likely(cur + LZ77_STEP_SIZE < end)); - while (cur < end && lz77_read8(cur++) == lz77_read8(wnd++)) - ; + while (cur < end && lz77_read8(cur) == lz77_read8(wnd)) { + cur++; + wnd++; + } return (cur - start); } |
