Subject: CVE-2021-47521: can: sja1000: fix use after free in ems_pcmcia_add_card()

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

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

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

can: sja1000: fix use after free in ems_pcmcia_add_card()

If the last channel is not available then "dev" is freed.  Fortunately,
we can just use "pdev->irq" instead.

Also we should check if at least one channel was set up.

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

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

	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 4.4.295 with commit cbd86110546f
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 4.9.293 with commit 1dd5b819f7e4
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 4.14.258 with commit c8718026ba28
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 4.19.221 with commit ccf070183e46
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 5.4.165 with commit 1a295fea90e1
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 5.10.85 with commit 923f4dc5df67
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 5.15.8 with commit 474f9a8534f5
	Issue introduced in 3.2 with commit fd734c6f25ae and fixed in 5.16 with commit 3ec6ca6b1a8e

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-47521
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/can/sja1000/ems_pcmcia.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/cbd86110546f7f730a1f5d7de56c944a336c15c4
	https://git.kernel.org/stable/c/1dd5b819f7e406dc15bbc7670596ff25261aaa2a
	https://git.kernel.org/stable/c/c8718026ba287168ff9ad0ccc4f9a413062cba36
	https://git.kernel.org/stable/c/ccf070183e4655824936c0f96c4a2bcca93419aa
	https://git.kernel.org/stable/c/1a295fea90e1acbe80c6d4940f5ff856edcd6bec
	https://git.kernel.org/stable/c/923f4dc5df679f678e121c20bf2fd70f7bf3e288
	https://git.kernel.org/stable/c/474f9a8534f5f89841240a7e978bafd6e1e039ce
	https://git.kernel.org/stable/c/3ec6ca6b1a8e64389f0212b5a1b0f6fed1909e45