Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbd6d088 authored by Jia-Ju Bai's avatar Jia-Ju Bai Committed by Greg Kroah-Hartman
Browse files

hippi: Fix a Fix a possible sleep-in-atomic bug in rr_close




[ Upstream commit 6e266610eb6553cfb7e7eb5d11914bd01509c406 ]

The driver may sleep under a spinlock.
The function call path is:
rr_close (acquire the spinlock)
  free_irq --> may sleep

To fix it, free_irq is moved to the place without holding the spinlock.

This bug is found by my static analysis tool(DSAC) and checked by my code review.

Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@163.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 12652198
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1381,8 +1381,8 @@ static int rr_close(struct net_device *dev)
			    rrpriv->info_dma);
	rrpriv->info = NULL;

	free_irq(pdev->irq, dev);
	spin_unlock_irqrestore(&rrpriv->lock, flags);
	free_irq(pdev->irq, dev);

	return 0;
}