Call signal_pending before reading a chunk of data from the device so that long read operations can be interrupted with a signal.
Signed-off-by: Keith Packard <kei...@keithp.com> --- drivers/usb/misc/chaoskey.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/usb/misc/chaoskey.c b/drivers/usb/misc/chaoskey.c index 23c7948..ab87db2 100644 --- a/drivers/usb/misc/chaoskey.c +++ b/drivers/usb/misc/chaoskey.c @@ -394,6 +394,13 @@ static ssize_t chaoskey_read(struct file *file, if (result) goto bail; if (dev->valid == dev->used) { + + if (signal_pending(current)) { + result = -ERESTARTSYS; + mutex_unlock(&dev->lock); + goto bail; + } + result = _chaoskey_fill(dev); if (result) { mutex_unlock(&dev->lock); -- 2.7.0