patch: s2255drv: fix race condition on set mode
From: Dean Anderson <[email protected]>
set_modeready flag must be set before command sent to USB in s2255_write_config.
Signed-off-by Dean Anderson <[email protected]>
linux/drivers/media/video/s2255drv.c renamed from linux/drivers/media/video/s2255drv.c.orig +1 -1
@@ -1238,6 +1238,7 @@ static int s2255_set_mode(struct s2255_d buffer[1 ] = (u32 ) chn_rev; buffer[2 ] =CMD_SET_MODE ;memcpy (&buffer[3 ], &dev->mode[chn],sizeof (struct s2255_mode )); + dev->setmode_ready[chn] =0 ; res =s2255_write_config (dev->udev, (unsigned char *)buffer,512 );if (debug)dump_verify_mode (dev, mode);
@@ -1246,7 +1247,6 @@ static int s2255_set_mode(struct s2255_d/* wait at least 3 frames before continuing */ if (mode->restart) { - dev->setmode_ready[chn] =0 ;wait_event_timeout (dev->wait_setmode[chn], (dev->setmode_ready[chn] !=0 ),msecs_to_jiffies (S2255_SETMODE_TIMEOUT ));