diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/media/dvb-core/dvb_frontend.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/media/dvb-core/dvb_frontend.c')
| -rw-r--r-- | drivers/media/dvb-core/dvb_frontend.c | 16 | 
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c index cc0a789f09ae..9293b058ab99 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c @@ -293,14 +293,22 @@ static int dvb_frontend_get_event(struct dvb_frontend *fe,  	}  	if (events->eventw == events->eventr) { -		int ret; +		struct wait_queue_entry wait; +		int ret = 0;  		if (flags & O_NONBLOCK)  			return -EWOULDBLOCK; -		ret = wait_event_interruptible(events->wait_queue, -					       dvb_frontend_test_event(fepriv, events)); - +		init_waitqueue_entry(&wait, current); +		add_wait_queue(&events->wait_queue, &wait); +		while (!dvb_frontend_test_event(fepriv, events)) { +			wait_woken(&wait, TASK_INTERRUPTIBLE, 0); +			if (signal_pending(current)) { +				ret = -ERESTARTSYS; +				break; +			} +		} +		remove_wait_queue(&events->wait_queue, &wait);  		if (ret < 0)  			return ret;  	}  |