OpenCloudOS-Kernel/drivers/char/hw_random
Herbert Xu 2540c3ba9f hwrng: core - Fix page fault dead lock on mmap-ed hwrng
commit 78aafb3884f6bc6636efcc1760c891c8500b9922 upstream.

There is a dead-lock in the hwrng device read path.  This triggers
when the user reads from /dev/hwrng into memory also mmap-ed from
/dev/hwrng.  The resulting page fault triggers a recursive read
which then dead-locks.

Fix this by using a stack buffer when calling copy_to_user.

Reported-by: Edward Adam Davis <eadavis@qq.com>
Reported-by: syzbot+c52ab18308964d248092@syzkaller.appspotmail.com
Fixes: 9996508b33 ("hwrng: core - Replace u32 in driver API with byte array")
Cc: <stable@vger.kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 5030d4c798863ccb266563201b341a099e8cdd48)
Signed-off-by: Alex Shi (tencent) <alexs@kernel.org>
Signed-off-by: Jianping Liu <frankjpliu@tencent.com>
2024-11-28 21:39:06 +08:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile hwrng: add OP-TEE based rng driver 2019-02-01 15:12:46 +01:00
amd-rng.c tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
atmel-rng.c tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
bcm2835-rng.c hwrng: bcm2835 - fix probe as platform device 2019-02-28 14:17:58 +08:00
cavium-rng-vf.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
cavium-rng.c hwrng: cavium - make two functions static 2018-03-09 22:45:34 +08:00
core.c hwrng: core - Fix page fault dead lock on mmap-ed hwrng 2024-11-28 21:39:06 +08:00
exynos-trng.c tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
geode-rng.c tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
hisi-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
imx-rngc.c tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
intel-rng.c hwrng: printk replacement 2014-10-02 14:35:00 +08:00
iproc-rng200.c hwrng: iproc-rng200 - Add support for 7211 2019-06-20 14:18:32 +08:00
ixp4xx-rng.c IXP4xx: HW pseudo-random generator is available on IXP45x/46x only. 2012-11-22 03:35:39 +00:00
ks-sa-rng.c ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
meson-rng.c hwrng: meson - update with SPDX Licence identifier 2019-05-30 15:28:40 +08:00
mtk-rng.c tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
mxc-rnga.c hwrng: mxc-rnga - use devm_platform_ioremap_resource() to simplify code 2019-07-27 21:08:32 +10:00
n2-asm.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
n2-drv.c hwrng: n2-drv - fix typo 2019-08-08 12:07:49 +10:00
n2rng.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nomadik-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
octeon-rng.c hwrng: octeon - Use devm_hwrng_register 2015-09-21 22:00:38 +08:00
omap-rng.c tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
omap3-rom-rng.c tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
optee-rng.c hwrng: make symbol 'optee_rng_id_table' static 2019-02-20 17:58:50 +01:00
pasemi-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pic32-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 445 2019-06-05 17:37:18 +02:00
powernv-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
pseries-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
s390-trng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 376 2019-06-05 17:37:10 +02:00
st-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
stm32-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 110 2019-05-24 17:39:01 +02:00
timeriomem-rng.c ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
tx4939-rng.c hwrng: tx4939 - Use devm_hwrng_register instead of hwrng_register 2016-08-31 23:00:49 +08:00
via-rng.c hwrng: via - support new Centaur CPU 2018-04-21 00:59:03 +08:00
virtio-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 102 2019-05-24 17:39:00 +02:00
xgene-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00