On Mon, Jun 24, 2019 at 10:33:23AM +0200, Oliver Neukum wrote: > 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); GNSS core doesn't have any exclusive waiters, so no need to use use the exclusive wake-up (all) interface. > gdev->ops->close(gdev); > } > up_write(&gdev->rwsem); Thanks, Johan