Subject: CVE-2023-52531: wifi: iwlwifi: mvm: Fix a memory corruption issue

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

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

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

wifi: iwlwifi: mvm: Fix a memory corruption issue

A few lines above, space is kzalloc()'ed for:
	sizeof(struct iwl_nvm_data) +
	sizeof(struct ieee80211_channel) +
	sizeof(struct ieee80211_rate)

'mvm->nvm_data' is a 'struct iwl_nvm_data', so it is fine.

At the end of this structure, there is the 'channels' flex array.
Each element is of type 'struct ieee80211_channel'.
So only 1 element is allocated in this array.

When doing:
  mvm->nvm_data->bands[0].channels = mvm->nvm_data->channels;
We point at the first element of the 'channels' flex array.
So this is fine.

However, when doing:
  mvm->nvm_data->bands[0].bitrates =
			(void *)((u8 *)mvm->nvm_data->channels + 1);
because of the "(u8 *)" cast, we add only 1 to the address of the beginning
of the flex array.

It is likely that we want point at the 'struct ieee80211_rate' allocated
just after.

Remove the spurious casting so that the pointer arithmetic works as
expected.

The Linux kernel CVE team has assigned CVE-2023-52531 to this issue.

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

	Issue introduced in 3.9 with commit 8ca151b568b6 and fixed in 5.15.135 with commit 7c8faa310803
	Issue introduced in 3.9 with commit 8ca151b568b6 and fixed in 6.1.57 with commit 6b3223449c95
	Issue introduced in 3.9 with commit 8ca151b568b6 and fixed in 6.5.7 with commit f06cdd8d4ba5
	Issue introduced in 3.9 with commit 8ca151b568b6 and fixed in 6.6 with commit 8ba438ef3cac

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-2023-52531
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:
	drivers/net/wireless/intel/iwlwifi/mvm/fw.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/7c8faa31080342aec4903c9acb20caf82fcca1ef
	https://git.kernel.org/stable/c/6b3223449c959a8be94a1f042288059e40fcccb0
	https://git.kernel.org/stable/c/f06cdd8d4ba5252986f51f80cc30263636397128
	https://git.kernel.org/stable/c/8ba438ef3cacc4808a63ed0ce24d4f0942cfe55d