Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ceb4340d authored by Mike Isely's avatar Mike Isely Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (7687): pvrusb2: Fix oops in pvrusb2-dvb



The pvrusb2-dvb feed thread cannot be allowed to exit by itself
without first waiting for kthread_should_stop() to return true.
Otherwise the driver will have a dangling task_struct context, which
will cause a very nasty kernel oops.

Signed-off-by: default avatarMike Isely <isely@pobox.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent e2780fb4
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -138,9 +138,8 @@ static void pvr2_dvb_fh_done(struct pvr2_dvb_fh *fh)
	pvr2_channel_done(&fh->channel);
}

static int pvr2_dvb_feed_thread(void *data)
static int pvr2_dvb_feed_func(struct pvr2_dvb_adapter *adap)
{
	struct pvr2_dvb_adapter *adap = data;
	struct pvr2_dvb_fh fh;
	int ret;
	unsigned int count;
@@ -203,12 +202,18 @@ static int pvr2_dvb_feed_thread(void *data)

	printk(KERN_DEBUG "dvb thread stopped\n");

	return 0;
}

static int pvr2_dvb_feed_thread(void *data)
{
	int stat = pvr2_dvb_feed_func(data);
	/* from videobuf-dvb.c: */
	while (!kthread_should_stop()) {
		set_current_state(TASK_INTERRUPTIBLE);
		schedule();
	}
	return 0;
	return stat;
}

static int pvr2_dvb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff)