No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Herbert Xu a43bcb0b66 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:37:18 +02:00
arch powerpc/mm/dax: Fix the condition when checking if altmap vmemap can cross-boundary 2023-07-27 08:37:17 +02:00
block block/blk-iocost (gcc13): keep large values in a new enum 2023-06-14 10:59:54 +02:00
certs
crypto KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() 2023-06-21 15:44:08 +02:00
Documentation Remove DECnet support from kernel 2023-06-21 15:44:10 +02:00
drivers hwrng: virtio - Fix race on data_avail and actual data 2023-07-27 08:37:18 +02:00
fs pstore/ram: Add check for kstrdup 2023-07-27 08:37:06 +02:00
include PCI: Add pci_clear_master() stub for non-CONFIG_PCI 2023-07-27 08:37:16 +02:00
init init/Kconfig: fix CC_HAS_ASM_GOTO_TIED_OUTPUT test with dash 2022-12-08 11:22:59 +01:00
ipc ipc/sem: Fix dangling sem_array access in semtimedop race 2022-12-08 11:23:06 +01:00
kernel kexec: fix a memory leak in crash_shrink_memory() 2023-07-27 08:37:10 +02:00
lib lib/ts_bm: reset initial match offset for every block of text 2023-07-27 08:37:12 +02:00
LICENSES
mm mm: make wait_on_page_writeback() wait for multiple pending writebacks 2023-06-28 10:18:42 +02:00
net netlink: Add __sock_i_ino() for __netlink_diag_dump(). 2023-07-27 08:37:12 +02:00
samples samples/bpf: Fix buffer overflow in tcp_basertt 2023-07-27 08:37:07 +02:00
scripts scripts/tags.sh: Resolve gtags empty index generation 2023-07-27 08:37:03 +02:00
security ima: Fix build warnings 2023-07-27 08:37:06 +02:00
sound ASoC: imx-audmix: check return value of devm_kasprintf() 2023-07-27 08:37:15 +02:00
tools perf dwarf-aux: Fix off-by-one in die_get_varname() 2023-07-27 08:37:17 +02:00
usr
virt KVM: Destroy target device if coalesced MMIO unregistration fails 2023-03-11 16:44:01 +01:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS Remove DECnet support from kernel 2023-06-21 15:44:10 +02:00
Makefile Linux 5.4.250 2023-07-24 19:10:53 +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.