linux-stable/tools
Peter Zijlstra 70d9329857 notifier: Fix broken error handling pattern
The current notifiers have the following error handling pattern all
over the place:

	int err, nr;

	err = __foo_notifier_call_chain(&chain, val_up, v, -1, &nr);
	if (err & NOTIFIER_STOP_MASK)
		__foo_notifier_call_chain(&chain, val_down, v, nr-1, NULL)

And aside from the endless repetition thereof, it is broken. Consider
blocking notifiers; both calls take and drop the rwsem, this means
that the notifier list can change in between the two calls, making @nr
meaningless.

Fix this by replacing all the __foo_notifier_call_chain() functions
with foo_notifier_call_chain_robust() that embeds the above pattern,
but ensures it is inside a single lock region.

Note: I switched atomic_notifier_call_chain_robust() to use
      the spinlock, since RCU cannot provide the guarantee
      required for the recovery.

Note: software_resume() error handling was broken afaict.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/20200818135804.325626653@infradead.org
2020-09-01 09:58:03 +02:00
..
accounting
arch tools headers kvm s390: Sync headers with the kernel sources 2020-08-12 08:52:32 -03:00
bootconfig tools/bootconfig: Add testcases for value override operator 2020-08-03 16:22:29 -04:00
bpf tools/resolve_btfids: Fix sections with wrong alignment 2020-08-20 14:17:20 -07:00
build perf build-ids: Fall back to debuginfod query if debuginfo not found 2020-08-14 09:51:14 -03:00
cgroup tools/cgroup: add memcg_slabinfo.py tool 2020-08-07 11:33:25 -07:00
debugging
edid
firewire
firmware
gpio tools: gpio: fix spurious close warning in gpio-event-mon 2020-07-12 10:22:01 +02:00
hv tools: hv: change http to https in hv_kvp_daemon.c 2020-07-06 10:46:23 +00:00
iio
include Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 2020-08-21 12:54:50 -07:00
io_uring io_uring: change the poll type to be 32-bits 2020-06-21 20:44:00 -06:00
kvm/kvm_stat
laptop
leds
lib Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 2020-08-21 12:54:50 -07:00
memory-model These were the main changes in this cycle: 2020-08-03 14:39:35 -07:00
nfsd
objtool Misc updates: 2020-08-03 14:45:33 -07:00
pci
pcmcia
perf perf tools changes for v5.9: 2nd batch 2020-08-15 11:17:15 -07:00
power notifier: Fix broken error handling pattern 2020-09-01 09:58:03 +02:00
scripts
spi
testing powerpc fixes for 5.9 #4 2020-08-30 10:56:12 -07:00
thermal/tmon
time
usb tools: usb: move to tools buildsystem 2020-08-19 14:11:44 +02:00
virtio virtio: fixes, features 2020-08-11 14:34:17 -07:00
vm
wmi
Makefile bpf: Compile resolve_btfids tool at kernel compilation start 2020-07-13 10:42:02 -07:00