If you deregister a device you need to wake up all waiters as there will be no further wakeups. Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx> --- drivers/gnss/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c index e6f94501cb28..0d13bd2cefd5 100644 --- a/drivers/gnss/core.c +++ b/drivers/gnss/core.c @@ -303,7 +303,7 @@ void gnss_deregister_device(struct gnss_device *gdev) down_write(&gdev->rwsem); gdev->disconnected = true; if (gdev->count) { - wake_up_interruptible(&gdev->read_queue); + wake_up_interruptible_all(&gdev->read_queue); gdev->ops->close(gdev); } up_write(&gdev->rwsem); -- 2.16.4