diff options
| author | Dean Anderson <dean@sensoray.com> | 2009-04-20 18:07:44 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-04-29 14:41:14 -0400 |
| commit | 9d63cec16829ac3600c5014d207a659df3b93c9a (patch) | |
| tree | 89edc69720bba4a026ac6228b8b79ab24565f473 | |
| parent | 272aa3966b3244e576c5c07bfff77ea320b89317 (diff) | |
V4L/DVB (11570): patch: s2255drv: fix race condition on set mode
set_modeready flag must be set before command sent to USB in
s2255_write_config.
Signed-off-by: Dean Anderson <dean@sensoray.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/video/s2255drv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/video/s2255drv.c b/drivers/media/video/s2255drv.c index 5202cadb2aae..30f4698be90a 100644 --- a/drivers/media/video/s2255drv.c +++ b/drivers/media/video/s2255drv.c | |||
| @@ -1237,6 +1237,7 @@ static int s2255_set_mode(struct s2255_dev *dev, unsigned long chn, | |||
| 1237 | buffer[1] = (u32) chn_rev; | 1237 | buffer[1] = (u32) chn_rev; |
| 1238 | buffer[2] = CMD_SET_MODE; | 1238 | buffer[2] = CMD_SET_MODE; |
| 1239 | memcpy(&buffer[3], &dev->mode[chn], sizeof(struct s2255_mode)); | 1239 | memcpy(&buffer[3], &dev->mode[chn], sizeof(struct s2255_mode)); |
| 1240 | dev->setmode_ready[chn] = 0; | ||
| 1240 | res = s2255_write_config(dev->udev, (unsigned char *)buffer, 512); | 1241 | res = s2255_write_config(dev->udev, (unsigned char *)buffer, 512); |
| 1241 | if (debug) | 1242 | if (debug) |
| 1242 | dump_verify_mode(dev, mode); | 1243 | dump_verify_mode(dev, mode); |
| @@ -1245,7 +1246,6 @@ static int s2255_set_mode(struct s2255_dev *dev, unsigned long chn, | |||
| 1245 | 1246 | ||
| 1246 | /* wait at least 3 frames before continuing */ | 1247 | /* wait at least 3 frames before continuing */ |
| 1247 | if (mode->restart) { | 1248 | if (mode->restart) { |
| 1248 | dev->setmode_ready[chn] = 0; | ||
| 1249 | wait_event_timeout(dev->wait_setmode[chn], | 1249 | wait_event_timeout(dev->wait_setmode[chn], |
| 1250 | (dev->setmode_ready[chn] != 0), | 1250 | (dev->setmode_ready[chn] != 0), |
| 1251 | msecs_to_jiffies(S2255_SETMODE_TIMEOUT)); | 1251 | msecs_to_jiffies(S2255_SETMODE_TIMEOUT)); |
