V4L/DVB (7713): pvrusb2: Implement cleaner DVB kernel thread shutdown

Earlier fix to handle DVB feed thread aborts was overly-aggressive.
We can take better advantage of what kthread_stop() can do.  This
change simplifies things.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-dvb.c b/drivers/media/video/pvrusb2/pvrusb2-dvb.c
index d82fcea..c20eef0 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-dvb.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-dvb.c
@@ -41,7 +41,6 @@
 	stream = adap->channel.stream->stream;
 
 	for (;;) {
-		if (adap->feed_thread_stop) break;
 		if (kthread_should_stop()) break;
 
 		/* Not sure about this... */
@@ -76,7 +75,7 @@
 		ret = wait_event_interruptible(
 		    adap->buffer_wait_data,
 		    (pvr2_stream_get_ready_count(stream) > 0) ||
-		    adap->feed_thread_stop);
+		    kthread_should_stop());
 		if (ret < 0) break;
 	}
 
@@ -110,8 +109,6 @@
 	struct pvr2_stream *stream;
 
 	if (adap->thread) {
-		adap->feed_thread_stop = !0;
-		pvr2_dvb_notify(adap);
 		kthread_stop(adap->thread);
 		adap->thread = NULL;
 	}
@@ -182,7 +179,6 @@
 		if (ret < 0) return ret;
 	}
 
-	adap->feed_thread_stop = 0;
 	adap->thread = kthread_run(pvr2_dvb_feed_thread, adap, "pvrusb2-dvb");
 
 	if (IS_ERR(adap->thread)) {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-dvb.h b/drivers/media/video/pvrusb2/pvrusb2-dvb.h
index 2dd0d4e..884ff91 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-dvb.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-dvb.h
@@ -28,7 +28,6 @@
 	unsigned int		stream_run:1;
 
 	wait_queue_head_t	buffer_wait_data;
-	int			feed_thread_stop;
 	char			*buffer_storage[PVR2_DVB_BUFFER_COUNT];
 };