Subject: CVE-2021-47295: net: sched: fix memory leak in tcindex_partial_destroy_work

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

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

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

net: sched: fix memory leak in tcindex_partial_destroy_work

Syzbot reported memory leak in tcindex_set_parms(). The problem was in
non-freed perfect hash in tcindex_partial_destroy_work().

In tcindex_set_parms() new tcindex_data is allocated and some fields from
old one are copied to new one, but not the perfect hash. Since
tcindex_partial_destroy_work() is the destroy function for old
tcindex_data, we need to free perfect hash to avoid memory leak.

The Linux kernel CVE team has assigned CVE-2021-47295 to this issue.

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

	Issue introduced in 3.18 with commit 331b72922c5f and fixed in 5.4.136 with commit 8d7924ce85ba
	Issue introduced in 3.18 with commit 331b72922c5f and fixed in 5.10.54 with commit 8e9662fde6d6
	Issue introduced in 3.18 with commit 331b72922c5f and fixed in 5.13.6 with commit cac71d27745f
	Issue introduced in 3.18 with commit 331b72922c5f and fixed in 5.14 with commit f5051bcece50

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-2021-47295
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:
	net/sched/cls_tcindex.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/8d7924ce85bae64e7a67c366c7c50840f49f3a62
	https://git.kernel.org/stable/c/8e9662fde6d63c78eb1350f6167f64c9d71a865b
	https://git.kernel.org/stable/c/cac71d27745f92ee13f0ecc668ffe151a4a9c9b1
	https://git.kernel.org/stable/c/f5051bcece50140abd1a11a2d36dc3ec5484fc32