linux/drivers
Lyude Paul de9f8eea5a drm/atomic_helper: Stop modesets on unregistered connectors harder
Unfortunately, it appears our fix in:
commit b5d29843d8 ("drm/atomic_helper: Allow DPMS On<->Off changes
for unregistered connectors")

Which attempted to work around the problems introduced by:
commit 4d80273976 ("drm/atomic_helper: Disallow new modesets on
unregistered connectors")

Is still not the right solution, as modesets can still be triggered
outside of drm_atomic_set_crtc_for_connector().

So in order to fix this, while still being careful that we don't break
modesets that a driver may perform before being registered with
userspace, we replace connector->registered with a tristate member,
connector->registration_state. This allows us to keep track of whether
or not a connector is still initializing and hasn't been exposed to
userspace, is currently registered and exposed to userspace, or has been
legitimately removed from the system after having once been present.

Using this info, we can prevent userspace from performing new modesets
on unregistered connectors while still allowing the driver to perform
modesets on unregistered connectors before the driver has finished being
registered.

Changes since v1:
- Fix WARN_ON() in drm_connector_cleanup() that CI caught with this
  patchset in igt@drv_module_reload@basic-reload-inject and
  igt@drv_module_reload@basic-reload by checking if the connector is
  registered instead of unregistered, as calling drm_connector_cleanup()
  on a connector that hasn't been registered with userspace yet should
  stay valid.
- Remove unregistered_connector_check(), and just go back to what we
  were doing before in commit 4d80273976 ("drm/atomic_helper: Disallow
  new modesets on unregistered connectors") except replacing
  READ_ONCE(connector->registered) with drm_connector_is_unregistered().
  This gets rid of the behavior of allowing DPMS On<->Off, but that should
  be fine as it's more consistent with the UAPI we had before - danvet
- s/drm_connector_unregistered/drm_connector_is_unregistered/ - danvet
- Update documentation, fix some typos.

Fixes: b5d29843d8 ("drm/atomic_helper: Allow DPMS On<->Off changes for unregistered connectors")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: stable@vger.kernel.org
Cc: David Airlie <airlied@linux.ie>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20181016203946.9601-1-lyude@redhat.com
(cherry picked from commit 39b50c6038)
Fixes: e96550956f ("drm/atomic_helper: Disallow new modesets on unregistered connectors")
Fixes: 34ca26a98a ("drm/atomic_helper: Allow DPMS On<->Off changes for unregistered connectors")
Cc: stable@vger.kernel.org
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2018-10-19 11:46:46 +03:00
..
accessibility
acpi Merge branch 'acpi-bus' 2018-09-07 10:05:20 +02:00
amba
android android: binder: fix the race mmap and alloc_new_buf_locked 2018-09-12 09:18:29 +02:00
ata for-linus-20180920 2018-09-21 09:41:05 +02:00
atm
auxdisplay Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00
base firmware: Fix security issue with request_firmware_into_buf() 2018-09-12 09:31:00 +02:00
bcma
block for-linus-20180929 2018-09-29 14:52:14 -07:00
bluetooth Bluetooth: hci_ldisc: Free rw_semaphore on close 2018-09-11 13:33:57 +02:00
bus Merge branch 'perm-fix' into omap-for-v4.19/fixes-v2 2018-08-28 09:58:03 -07:00
cdrom cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status 2018-08-29 08:09:20 -06:00
char A few fixes that came around or after the merge window, except 2018-09-12 19:33:56 -10:00
clk clk: x86: Stop marking clocks as CLK_IS_CRITICAL 2018-09-17 18:47:58 -07:00
clocksource clocksource/drivers/timer-atmel-pit: Properly handle error cases 2018-09-27 12:01:45 +02:00
connector
cpufreq cpufreq: qcom-kryo: Fix section annotations 2018-09-29 15:01:10 +02:00
cpuidle cpuidle: menu: Retain tick when shallow state is selected 2018-08-25 13:16:08 +02:00
crypto crypto: ccp - add timeout support in the SEV command 2018-09-13 13:27:43 +08:00
dax device-dax: Add missing address_space_operations 2018-09-22 09:07:33 -07:00
dca
devfreq Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00
dio
dma dmaengine: mic_x100_dma: use devm_kzalloc to fix an issue 2018-08-27 11:16:04 +05:30
dma-buf udmabuf: fix error code in map_udmabuf() 2018-09-14 11:44:59 +02:00
edac EDAC: Add missing MEM_LRDDR4 entry in edac_mem_types[] 2018-08-17 15:13:34 +02:00
eisa
extcon
firewire firewire: use 64-bit time_t based interfaces 2018-08-17 16:20:27 -07:00
firmware efi/libstub/arm: default EFI_ARMSTUB_DTB_LOADER to y 2018-09-12 16:41:41 +02:00
fmc
fpga fpga: dfl: fme: fix return value check in in pr_mgmt_init() 2018-09-12 09:31:00 +02:00
fsi fsi: sbefifo: Bump max command length 2018-08-08 15:44:47 +10:00
gnss
gpio gpio: Fix crash due to registration race 2018-08-31 11:30:45 +02:00
gpu drm/atomic_helper: Stop modesets on unregistered connectors harder 2018-10-19 11:46:46 +03:00
hid HID: i2c-hid: Don't reset device upon system resume 2018-09-06 16:30:53 +02:00
hsi
hv vmbus: don't return values for uninitalized channels 2018-09-12 09:31:00 +02:00
hwmon Various bug fixes for nct6775 driver 2018-09-19 22:59:30 +02:00
hwspinlock
hwtracing intel_th: pci: Add Ice Lake PCH support 2018-09-18 16:08:38 +02:00
i2c i2c: xiic: Make the start and the byte count write atomic 2018-09-06 20:49:09 +02:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2018-08-22 07:40:33 -07:00
idle
iio First set of IIO fixes for the 4.19 cycle. 2018-09-09 09:33:29 +02:00
infiniband Second rc pull request 2018-09-27 21:53:55 +02:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2018-09-28 18:04:50 -07:00
iommu iommu/amd: Return devid as alias for ACPI HID devices 2018-09-26 09:41:11 +02:00
ipack
irqchip irqchip/gic-v3-its: Cap lpi_id_bits to reduce memory footprint 2018-09-06 20:31:59 +02:00
isdn isdn: Disable IIOCDBGVAR 2018-08-16 12:26:24 -07:00
leds leds: ns2: Change unsigned to unsigned int 2018-08-06 23:03:12 +02:00
lightnvm
macintosh macintosh: therm_windtunnel: drop using attach_adapter 2018-08-24 14:42:42 +02:00
mailbox mailbox: Add support for i.MX messaging unit 2018-08-15 09:53:07 +05:30
mcb
md for-linus-20180929 2018-09-29 14:52:14 -07:00
media media: platform: fix cros-ec-cec build error 2018-09-17 14:32:29 -04:00
memory memory: ti-aemif: fix a potential NULL-pointer dereference 2018-09-06 10:04:07 -07:00
memstick
message
mfd mfd: omap-usb-host: Fix dts probe of children 2018-09-11 16:47:33 +01:00
misc misc: hmc6352: fix potential Spectre v1 2018-09-12 09:31:00 +02:00
mmc mmc: meson-mx-sdio: fix OF child-node lookup 2018-09-05 08:28:45 +02:00
mtd mtd: devices: m25p80: Make sure the buffer passed in op is DMA-able 2018-09-18 10:17:48 +02:00
mux mux: adgs1408: new driver for Analog Devices ADGS1408/1409 mux 2018-08-02 10:23:02 +02:00
net Second rc pull request 2018-09-27 21:53:55 +02:00
nfc
ntb
nubus
nvdimm libnvdimm-for-4.19_dax-memory-failure 2018-08-25 18:43:59 -07:00
nvme nvme: properly propagate errors in nvme_mpath_init 2018-09-25 16:21:40 -07:00
nvmem
of Devicetree fixes for 4.19, part 2: 2018-09-14 13:03:17 -10:00
opp
oprofile
parisc
parport Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00
pci pci-v4.19-fixes-2 2018-09-28 18:20:41 +02:00
pcmcia pcmcia: remove long deprecated pcmcia_request_exclusive_irq() function 2018-08-18 12:30:42 -07:00
perf Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00
phy
pinctrl Revert "pinctrl: intel: Do pin translation when lock IRQ" 2018-09-25 12:50:00 +02:00
platform platform/x86: alienware-wmi: Correct a memory leak 2018-09-10 13:45:43 -07:00
pnp
power treewide: convert ISO_8859-1 text comments to utf-8 2018-08-23 18:48:43 -07:00
powercap
pps
ps3
ptp Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00
pwm pwm: mediatek: Add MT7628 support 2018-08-20 11:36:07 +02:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: remove redundant pointer md 2018-08-22 10:52:51 -07:00
ras
regulator regulator: fix crash caused by null driver data 2018-09-20 09:04:51 -07:00
remoteproc remoteproc/davinci: use the reset framework 2018-08-16 17:39:55 -07:00
reset ARM: SoC: late updates 2018-08-25 14:12:36 -07:00
rpmsg
rtc RTC for 4.19 2018-08-20 16:30:27 -07:00
s390 s390 fixes for 4.19-rc4 2018-09-13 16:22:24 -10:00
sbus
scsi scsi: sd: don't crash the host on invalid commands 2018-09-21 12:42:57 -04:00
sfi
sh sh: introduce a sh_cacheop_vaddr helper 2018-08-02 13:54:06 +02:00
siox
slimbus
sn
soc ARM: Device-tree updates 2018-08-23 14:02:22 -07:00
soundwire soundwire: Fix acquiring bus lock twice during master release 2018-08-27 09:49:48 +05:30
spi spi: Fixes for v4.19 2018-09-28 18:04:06 -07:00
spmi
ssb ssb: Remove SSB_WARN_ON, SSB_BUG_ON and SSB_DEBUG 2018-08-09 18:47:47 +03:00
staging This is the 4.19-rc6 release 2018-10-04 11:03:34 +10:00
target scsi: target: iscsi: Use bin2hex instead of a re-implementation 2018-09-21 12:32:30 -04:00
tc
tee ARM: SoC driver updates 2018-08-23 13:52:46 -07:00
thermal Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal 2018-08-28 16:11:34 -07:00
thunderbolt
tty This is the 4.19-rc6 release 2018-10-04 11:03:34 +10:00
uio Char/Misc fix for 4.19-rc1 2018-08-19 09:30:44 -07:00
usb usb: typec: mux: Take care of driver module reference counting 2018-09-20 13:35:01 +02:00
uwb
vfio powerpc updates for 4.19 2018-08-17 11:32:50 -07:00
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-08-27 11:59:39 -07:00
video fbdev: Add FBINFO_HIDE_SMEM_START flag 2018-09-11 14:11:54 +02:00
virt
virtio virtio, vhost: fixes, tweaks 2018-08-24 08:45:19 -07:00
visorbus
vlynq
vme
w1 power supply and reset changes for the v4.19 series 2018-08-21 18:06:27 -07:00
watchdog include/linux/compiler*.h: make compiler-*.h mutually exclusive 2018-08-22 17:31:34 -07:00
xen xen: issue warning message when out of grant maptrack entries 2018-09-19 11:27:42 -04:00
zorro
Kconfig
Makefile Char/Misc driver patches for 4.19-rc1 2018-08-18 11:04:51 -07:00