Subject: CVE-2022-48748: net: bridge: vlan: fix memory leak in __allowed_ingress

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

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

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

net: bridge: vlan: fix memory leak in __allowed_ingress

When using per-vlan state, if vlan snooping and stats are disabled,
untagged or priority-tagged ingress frame will go to check pvid state.
If the port state is forwarding and the pvid state is not
learning/forwarding, untagged or priority-tagged frame will be dropped
but skb memory is not freed.
Should free skb when __allowed_ingress returns false.

The Linux kernel CVE team has assigned CVE-2022-48748 to this issue.

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

	Issue introduced in 5.6 with commit a580c76d534c and fixed in 5.10.96 with commit 446ff1fc37c7
	Issue introduced in 5.6 with commit a580c76d534c and fixed in 5.15.19 with commit c5e216e880fa
	Issue introduced in 5.6 with commit a580c76d534c and fixed in 5.16.5 with commit 14be8d448fca
	Issue introduced in 5.6 with commit a580c76d534c and fixed in 5.17 with commit fd20d9738395

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-2022-48748
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/bridge/br_vlan.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/446ff1fc37c74093e81db40811a07b5a19f1d797
	https://git.kernel.org/stable/c/c5e216e880fa6f2cd9d4a6541269377657163098
	https://git.kernel.org/stable/c/14be8d448fca6fe7b2a413831eedd55aef6c6511
	https://git.kernel.org/stable/c/fd20d9738395cf8e27d0a17eba34169699fccdff