diff options
author | Takashi Iwai | 2022-09-08 11:51:13 +0200 |
---|---|---|
committer | Thomas Zimmermann | 2022-09-10 21:45:52 +0200 |
commit | c5c354a3a4728045e1342166394c615d75d45377 (patch) | |
tree | 21028e170a6dd96f1ae4eec9375a559f1766bb8d /drivers/gpu/drm/etnaviv/state_blt.xml.h | |
parent | 046f4f0af7fd1fad06793d863d288c6b2cd84e99 (diff) |
drm/udl: Fix inconsistent urbs.count value during udl_free_urb_list()
In the current design, udl_get_urb() may be called asynchronously
during the driver freeing its URL list via udl_free_urb_list().
The problem is that the sync is determined by comparing the urbs.count
and urbs.available fields, while we clear urbs.count field only once
after udl_free_urb_list() finishes, i.e. during udl_free_urb_list(),
the state becomes inconsistent.
For fixing this inconsistency and also for hardening the locking
scheme, this patch does a slight refactoring of the code around
udl_get_urb() and udl_free_urb_list(). Now urbs.count is updated in
the same spinlock at extracting a URB from the list in
udl_free_url_list().
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220908095115.23396-11-tiwai@suse.de
Diffstat (limited to 'drivers/gpu/drm/etnaviv/state_blt.xml.h')
0 files changed, 0 insertions, 0 deletions