Subject: CVE-2024-26828: cifs: fix underflow in parse_server_interfaces()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

cifs: fix underflow in parse_server_interfaces()

In this loop, we step through the buffer and after each item we check
if the size_left is greater than the minimum size we need.  However,
the problem is that "bytes_left" is type ssize_t while sizeof() is type
size_t.  That means that because of type promotion, the comparison is
done as an unsigned and if we have negative bytes left the loop
continues instead of ending.

The Linux kernel CVE team has assigned CVE-2024-26828 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 4.18 with commit fe856be475f7 and fixed in 6.1.79 with commit 7190353835b4
	Issue introduced in 4.18 with commit fe856be475f7 and fixed in 6.6.18 with commit f7ff1c89fb6e
	Issue introduced in 4.18 with commit fe856be475f7 and fixed in 6.7.6 with commit df2af9fdbc4d
	Issue introduced in 4.18 with commit fe856be475f7 and fixed in 6.8 with commit cffe487026be

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-26828
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	fs/smb/client/smb2ops.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/7190353835b4a219abb70f90b06cdcae97f11512
	https://git.kernel.org/stable/c/f7ff1c89fb6e9610d2b01c1821727729e6609308
	https://git.kernel.org/stable/c/df2af9fdbc4ddde18a3371c4ca1a86596e8be301
	https://git.kernel.org/stable/c/cffe487026be13eaf37ea28b783d9638ab147204