Re: [PATCH] saa7134: fix thread shutdown handling

Andrew Morton
2007-06-23T17:05:14Z

> On Thu, 21 Jun 2007 14:45:22 -0400 Jeff Mahoney <jeffm@suse.com> wrote:
> This patch changes the test for the thread pid from >= 0 to > 0.
>
> When the saa8134 driver initialization fails after a certain point,
> it goes through the complete shutdown process for the driver. Part
> of shutting it down includes tearing down the thread for tv audio.
>
> The test for tearing down the thread tests for >= 0. Since the dev
> structure is kzalloc'd, the test will always be true if we haven't
> tried to start the thread yet. We end up waiting on pid 0 to complete,
> which will never happen, so we lock up.
>
> This bug was observed in Novell Bugzilla 284718, when request_irq()
> failed.
>
> Signed-off-by: Jeff Mahoney <jeffm@suse.com>
>
> ---
>
> drivers/media/video/saa7134/saa7134-tvaudio.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/drivers/media/video/saa7134/saa7134-tvaudio.c 2007-06-12 15:45:16.000000000 -0400
> +++ b/drivers/media/video/saa7134/saa7134-tvaudio.c 2007-06-15 14:16:14.000000000 -0400
> @@ -1005,7 +1005,7 @@
> int saa7134_tvaudio_fini(struct saa7134_dev *dev)
> {
> /* shutdown tvaudio thread */
> - if (dev->thread.pid >= 0) {
> + if (dev->thread.pid > 0) {
> dev->thread.shutdown = 1;
> wake_up_interruptible(&dev->thread.wq);
> wait_for_completion(&dev->thread.exit);
>

This is no longer applicable to the dvb devel tree, because this code has
been converted to the kthread API.

However I guess we do want this in 2.6.22 and in 2.6.21.x. Mauro, if
that's OK, do you want me to do the merges?