linux_dsm_epyc7002/include
Michael S. Tsirkin e716953071 ptr_ring: fix race conditions when resizing
Resizing currently drops consumer lock.  This can cause entries to be
reordered, which isn't good in itself.  More importantly, consumer can
detect a false ring empty condition and block forever.

Further, nesting of consumer within producer lock is problematic for
tun, since it produces entries in a BH, which causes a lock order
reversal:

       CPU0                    CPU1
       ----                    ----
  consume:
  lock(&(&r->consumer_lock)->rlock);
                               resize:
                               local_irq_disable();
                               lock(&(&r->producer_lock)->rlock);
                               lock(&(&r->consumer_lock)->rlock);
  <Interrupt>
  produce:
  lock(&(&r->producer_lock)->rlock);

To fix, nest producer lock within consumer lock during resize,
and keep consumer lock during the whole swap operation.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Cc: stable@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-20 10:27:56 -05:00
..
acpi
asm-generic modversions: treat symbol CRCs as 32 bit quantities 2017-02-03 08:28:25 -08:00
clocksource
crypto
drm drm: Don't race connector registration 2017-01-30 10:17:32 +01:00
dt-bindings net: phy: Add LED mode driver for Microsemi PHYs. 2017-02-08 13:29:04 -05:00
keys
kvm KVM: arm64: Access CNTHCTL_EL2 bit fields correctly on VHE systems 2017-01-13 11:19:25 +00:00
linux ptr_ring: fix race conditions when resizing 2017-02-20 10:27:56 -05:00
math-emu
media
memory
misc
net sctp: add support for MSG_MORE 2017-02-20 10:26:09 -05:00
pcmcia
ras
rdma net-next: treewide use is_vlan_dev() helper function. 2017-02-06 16:33:29 -05:00
rxrpc
scsi Merge remote-tracking branch 'mkp-scsi/fixes' into fixes 2017-01-17 17:32:54 -05:00
soc ARCv2: MCIP: update the BCR per current changes 2017-01-24 11:05:59 -08:00
sound Merge remote-tracking branches 'asoc/fix/arizona', 'asoc/fix/dpcm', 'asoc/fix/dwc', 'asoc/fix/fsl-ssi' and 'asoc/fix/hdmi-codec' into asoc-linus 2017-01-10 10:47:50 +00:00
target target: Fix multi-session dynamic se_node_acl double free OOPs 2017-02-08 08:25:23 -08:00
trace trace: rename trace_print_hex_seq arg and add kdoc 2017-02-03 15:50:18 -05:00
uapi sctp: add support for generating stream ssn reset event notification 2017-02-19 18:17:59 -05:00
video
xen
Kbuild