Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: dvb_frontend: Use wait_event_freezable_timeout() for freezable kthread

A freezable kernel thread can enter frozen state during freezing by
either calling try_to_freeze() or using wait_event_freezable() and its
variants. So for the following snippet of code in a kernel thread loop:
wait_event_interruptible_timeout();
try_to_freeze();

We can change it to a simple wait_event_freezable_timeout() and
then eliminate a function call.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Kevin Hao and committed by
Hans Verkuil
ed917040 856525e8

+4 -9
+4 -9
drivers/media/dvb-core/dvb_frontend.c
··· 679 679 set_freezable(); 680 680 while (1) { 681 681 up(&fepriv->sem); /* is locked when we enter the thread... */ 682 - restart: 683 - wait_event_interruptible_timeout(fepriv->wait_queue, 684 - dvb_frontend_should_wakeup(fe) || 685 - kthread_should_stop() || 686 - freezing(current), 687 - fepriv->delay); 682 + wait_event_freezable_timeout(fepriv->wait_queue, 683 + dvb_frontend_should_wakeup(fe) || 684 + kthread_should_stop(), 685 + fepriv->delay); 688 686 689 687 if (kthread_should_stop() || dvb_frontend_is_exiting(fe)) { 690 688 /* got signal or quitting */ ··· 691 693 fe->exit = DVB_FE_NORMAL_EXIT; 692 694 break; 693 695 } 694 - 695 - if (try_to_freeze()) 696 - goto restart; 697 696 698 697 if (down_interruptible(&fepriv->sem)) 699 698 break;