mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
udl-kms: change down_interruptible to down
commit 8456b99c16 upstream.
If we leave urbs around, it causes not only leak, but also memory
corruption. This patch fixes the function udl_free_urb_list, so that it
always waits for all urbs that are in progress.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
01f0772ad0
commit
e0d786f711
@@ -169,18 +169,13 @@ static void udl_free_urb_list(struct drm_device *dev)
|
||||
struct list_head *node;
|
||||
struct urb_node *unode;
|
||||
struct urb *urb;
|
||||
int ret;
|
||||
unsigned long flags;
|
||||
|
||||
DRM_DEBUG("Waiting for completes and freeing all render urbs\n");
|
||||
|
||||
/* keep waiting and freeing, until we've got 'em all */
|
||||
while (count--) {
|
||||
|
||||
/* Getting interrupted means a leak, but ok at shutdown*/
|
||||
ret = down_interruptible(&udl->urbs.limit_sem);
|
||||
if (ret)
|
||||
break;
|
||||
down(&udl->urbs.limit_sem);
|
||||
|
||||
spin_lock_irqsave(&udl->urbs.lock, flags);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user