diff options
author | Daniel Vetter <[email protected]> | 2017-12-13 13:49:36 +0100 |
---|---|---|
committer | Daniel Vetter <[email protected]> | 2017-12-13 22:59:00 +0100 |
commit | ea497bb92064875497554ee7cdf10df7fb7393fc (patch) | |
tree | 2bfa08868034b4143432a897f172bf3aa98f1331 /net/unix/sysctl_net_unix.c | |
parent | 4b4df570b41dbb421f52605357d5d56c872df6d9 (diff) |
drm: rework delayed connector cleanup in connector_iter
PROBE_DEFER also uses system_wq to reprobe drivers, which means when
that again fails, and we try to flush the overall system_wq (to get
all the delayed connectore cleanup work_struct completed), we
deadlock.
Fix this by using just a single cleanup work, so that we can only
flush that one and don't block on anything else. That means a free
list plus locking, a standard pattern.
v2:
- Correctly free connectors only on last ref. Oops (Chris).
- use llist_head/node (Chris).
v3
- Add init_llist_head (Chris).
Fixes: a703c55004e1 ("drm: safely free connectors from connector_iter")
Fixes: 613051dac40d ("drm: locking&new iterators for connector_list")
Cc: Ben Widawsky <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: Chris Wilson <[email protected]>
Cc: Sean Paul <[email protected]>
Cc: <[email protected]> # v4.11+: 613051dac40d ("drm: locking&new iterators for connector_list"
Cc: <[email protected]> # v4.11+
Cc: Daniel Vetter <[email protected]>
Cc: Jani Nikula <[email protected]>
Cc: Gustavo Padovan <[email protected]>
Cc: David Airlie <[email protected]>
Cc: Javier Martinez Canillas <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Guillaume Tucker <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Matt Hart <[email protected]>
Cc: Thierry Escande <[email protected]>
Cc: Tomeu Vizoso <[email protected]>
Cc: Enric Balletbo i Serra <[email protected]>
Tested-by: Marek Szyprowski <[email protected]>
Reviewed-by: Chris Wilson <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'net/unix/sysctl_net_unix.c')
0 files changed, 0 insertions, 0 deletions