Go to file
Herbert Xu 77471e4912 hwrng: virtio - Fix race on data_avail and actual data
[ Upstream commit ac52578d6e8d300dd50f790f29a24169b1edd26c ]

The virtio rng device kicks off a new entropy request whenever the
data available reaches zero.  When a new request occurs at the end
of a read operation, that is, when the result of that request is
only needed by the next reader, then there is a race between the
writing of the new data and the next reader.

This is because there is no synchronisation whatsoever between the
writer and the reader.

Fix this by writing data_avail with smp_store_release and reading
it with smp_load_acquire when we first enter read.  The subsequent
reads are safe because they're either protected by the first load
acquire, or by the completion mechanism.

Also remove the redundant zeroing of data_idx in random_recv_done
(data_idx must already be zero at this point) and data_avail in
request_entropy (ditto).

Reported-by: syzbot+726dc8c62c3536431ceb@syzkaller.appspotmail.com
Fixes: f7f510ec19 ("virtio: An entropy device, as suggested by hpa.")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-07-27 08:43:59 +02:00
arch powerpc/mm/dax: Fix the condition when checking if altmap vmemap can cross-boundary 2023-07-27 08:43:58 +02:00
block blk-iocost: use spin_lock_irqsave in adjust_inuse_and_calc_cost 2023-07-27 08:43:32 +02:00
certs certs/blacklist_hashes.c: fix const confusion in certs blacklist 2022-06-22 14:13:17 +02:00
crypto KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() 2023-06-09 10:30:17 +02:00
Documentation mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30% 2023-06-28 10:28:09 +02:00
drivers hwrng: virtio - Fix race on data_avail and actual data 2023-07-27 08:43:59 +02:00
fs ovl: update of dentry revalidate flags after copy up 2023-07-27 08:43:55 +02:00
include mm: rename p4d_page_vaddr to p4d_pgtable and make it return pud_t * 2023-07-27 08:43:58 +02:00
init kbuild: check the minimum assembler version in Kconfig 2023-04-20 12:10:28 +02:00
io_uring io_uring/net: disable partial retries for recvmsg with cmsg 2023-06-28 10:28:09 +02:00
ipc ipc/sem: Fix dangling sem_array access in semtimedop race 2022-12-08 11:24:00 +01:00
kernel kcsan: Don't expect 64 bits atomic builtins from 32 bits architectures 2023-07-27 08:43:57 +02:00
lib lib/ts_bm: reset initial match offset for every block of text 2023-07-27 08:43:43 +02:00
LICENSES
mm memfd: check for non-NULL file_seals in memfd_create() syscall 2023-06-28 10:28:09 +02:00
net netlink: Add __sock_i_ino() for __netlink_diag_dump(). 2023-07-27 08:43:43 +02:00
samples samples/bpf: Fix buffer overflow in tcp_basertt 2023-07-27 08:43:36 +02:00
scripts scripts/tags.sh: Resolve gtags empty index generation 2023-07-27 08:43:31 +02:00
security ima: Fix build warnings 2023-07-27 08:43:35 +02:00
sound ASoC: imx-audmix: check return value of devm_kasprintf() 2023-07-27 08:43:55 +02:00
tools perf dwarf-aux: Fix off-by-one in die_get_varname() 2023-07-27 08:43:57 +02:00
usr usr/include/Makefile: add linux/nfc.h to the compile-test coverage 2022-02-01 17:25:48 +01:00
virt KVM: fix memoryleak in kvm_init() 2023-04-05 11:23:43 +02:00
.clang-format RDMA 5.10 pull request 2020-10-17 11:18:18 -07:00
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore kbuild: generate Module.symvers only when vmlinux exists 2021-05-19 10:12:59 +02:00
.mailmap mailmap: add two more addresses of Uwe Kleine-König 2020-12-06 10:19:07 -08:00
COPYING
CREDITS MAINTAINERS: Move Jason Cooper to CREDITS 2020-11-30 10:20:34 +01:00
Kbuild
Kconfig
MAINTAINERS Remove DECnet support from kernel 2023-06-21 15:45:38 +02:00
Makefile Linux 5.10.187 2023-07-24 19:09:12 +02:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.