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
Antoine Tenart ace6e7fe96 net-sysfs: try not to restart the syscall if it will fail eventually
[ Upstream commit 146e5e733310379f51924111068f08a3af0db830 ]

Due to deadlocks in the networking subsystem spotted 12 years ago[1],
a workaround was put in place[2] to avoid taking the rtnl lock when it
was not available and restarting the syscall (back to VFS, letting
userspace spin). The following construction is found a lot in the net
sysfs and sysctl code:

  if (!rtnl_trylock())
          return restart_syscall();

This can be problematic when multiple userspace threads use such
interfaces in a short period, making them to spin a lot. This happens
for example when adding and moving virtual interfaces: userspace
programs listening on events, such as systemd-udevd and NetworkManager,
do trigger actions reading files in sysfs. It gets worse when a lot of
virtual interfaces are created concurrently, say when creating
containers at boot time.

Returning early without hitting the above pattern when the syscall will
fail eventually does make things better. While it is not a fix for the
issue, it does ease things.

[1] https://lore.kernel.org/netdev/49A4D5D5.5090602@trash.net/
    https://lore.kernel.org/netdev/m14oyhis31.fsf@fess.ebiederm.org/
    and https://lore.kernel.org/netdev/20090226084924.16cb3e08@nehalam/
[2] Rightfully, those deadlocks are *hard* to solve.

Signed-off-by: Antoine Tenart <atenart@kernel.org>
Reviewed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-11-17 09:48:30 +01:00
arch ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK 2021-11-17 09:48:29 +01:00
block Revert "block, bfq: honor already-setup queue merges" 2021-10-06 15:42:34 +02:00
certs certs: Trigger creation of RSA module signing key if it's not an RSA key 2021-09-15 09:47:29 +02:00
crypto crypto: shash - avoid comparing pointers to exported functions under CFI 2021-07-14 16:53:13 +02:00
Documentation xen/balloon: add late_initcall_sync() for initial ballooning done 2021-11-17 09:48:25 +01:00
drivers media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() 2021-11-17 09:48:30 +01:00
fs quota: correct error number in free_dqentry() 2021-11-17 09:48:26 +01:00
include net: sched: update default qdisc visibility after Tx queue cnt changes 2021-11-17 09:48:28 +01:00
init kbuild: add CONFIG_LD_IS_LLD 2021-06-30 08:47:44 -04:00
ipc
kernel locking/lockdep: Avoid RCU-induced noinstr fail 2021-11-17 09:48:28 +01:00
lib Kconfig.debug: drop selecting non-existing HARDLOCKUP_DETECTOR_ARCH 2021-09-26 14:07:10 +02:00
LICENSES
mm mm, slub: fix potential memoryleak in kmem_cache_open() 2021-10-27 09:54:28 +02:00
net net-sysfs: try not to restart the syscall if it will fail eventually 2021-11-17 09:48:30 +01:00
samples samples: bpf: Fix tracex7 error raised on the missing argument 2021-09-22 12:26:30 +02:00
scripts gcc-plugins/structleak: add makefile var for disabling structleak 2021-10-27 09:54:28 +02:00
security smackfs: Fix use-after-free in netlbl_catmap_walk() 2021-11-17 09:48:28 +01:00
sound ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume 2021-11-17 09:48:25 +01:00
tools perf script: Check session->header.env.arch before using it 2021-11-02 19:46:15 +01:00
usr
virt KVM: do not shrink halt_poll_ns below grow_start 2021-10-09 14:39:50 +02:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile Linux 5.4.159 2021-11-12 14:43:05 +01: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.