diff options
Diffstat (limited to 'drivers/media/dvb/dvb-core/dmxdev.c')
| -rw-r--r-- | drivers/media/dvb/dvb-core/dmxdev.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c index 0c733c66a441..069d847ba887 100644 --- a/drivers/media/dvb/dvb-core/dmxdev.c +++ b/drivers/media/dvb/dvb-core/dmxdev.c | |||
| @@ -364,16 +364,15 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 364 | enum dmx_success success) | 364 | enum dmx_success success) |
| 365 | { | 365 | { |
| 366 | struct dmxdev_filter *dmxdevfilter = filter->priv; | 366 | struct dmxdev_filter *dmxdevfilter = filter->priv; |
| 367 | unsigned long flags; | ||
| 368 | int ret; | 367 | int ret; |
| 369 | 368 | ||
| 370 | if (dmxdevfilter->buffer.error) { | 369 | if (dmxdevfilter->buffer.error) { |
| 371 | wake_up(&dmxdevfilter->buffer.queue); | 370 | wake_up(&dmxdevfilter->buffer.queue); |
| 372 | return 0; | 371 | return 0; |
| 373 | } | 372 | } |
| 374 | spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); | 373 | spin_lock(&dmxdevfilter->dev->lock); |
| 375 | if (dmxdevfilter->state != DMXDEV_STATE_GO) { | 374 | if (dmxdevfilter->state != DMXDEV_STATE_GO) { |
| 376 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 375 | spin_unlock(&dmxdevfilter->dev->lock); |
| 377 | return 0; | 376 | return 0; |
| 378 | } | 377 | } |
| 379 | del_timer(&dmxdevfilter->timer); | 378 | del_timer(&dmxdevfilter->timer); |
| @@ -392,7 +391,7 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 392 | } | 391 | } |
| 393 | if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) | 392 | if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) |
| 394 | dmxdevfilter->state = DMXDEV_STATE_DONE; | 393 | dmxdevfilter->state = DMXDEV_STATE_DONE; |
| 395 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 394 | spin_unlock(&dmxdevfilter->dev->lock); |
| 396 | wake_up(&dmxdevfilter->buffer.queue); | 395 | wake_up(&dmxdevfilter->buffer.queue); |
| 397 | return 0; | 396 | return 0; |
| 398 | } | 397 | } |
| @@ -404,12 +403,11 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 404 | { | 403 | { |
| 405 | struct dmxdev_filter *dmxdevfilter = feed->priv; | 404 | struct dmxdev_filter *dmxdevfilter = feed->priv; |
| 406 | struct dvb_ringbuffer *buffer; | 405 | struct dvb_ringbuffer *buffer; |
| 407 | unsigned long flags; | ||
| 408 | int ret; | 406 | int ret; |
| 409 | 407 | ||
| 410 | spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); | 408 | spin_lock(&dmxdevfilter->dev->lock); |
| 411 | if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) { | 409 | if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) { |
| 412 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 410 | spin_unlock(&dmxdevfilter->dev->lock); |
| 413 | return 0; | 411 | return 0; |
| 414 | } | 412 | } |
| 415 | 413 | ||
| @@ -419,7 +417,7 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 419 | else | 417 | else |
| 420 | buffer = &dmxdevfilter->dev->dvr_buffer; | 418 | buffer = &dmxdevfilter->dev->dvr_buffer; |
| 421 | if (buffer->error) { | 419 | if (buffer->error) { |
| 422 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 420 | spin_unlock(&dmxdevfilter->dev->lock); |
| 423 | wake_up(&buffer->queue); | 421 | wake_up(&buffer->queue); |
| 424 | return 0; | 422 | return 0; |
| 425 | } | 423 | } |
| @@ -430,7 +428,7 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 430 | dvb_ringbuffer_flush(buffer); | 428 | dvb_ringbuffer_flush(buffer); |
| 431 | buffer->error = ret; | 429 | buffer->error = ret; |
| 432 | } | 430 | } |
| 433 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 431 | spin_unlock(&dmxdevfilter->dev->lock); |
| 434 | wake_up(&buffer->queue); | 432 | wake_up(&buffer->queue); |
| 435 | return 0; | 433 | return 0; |
| 436 | } | 434 | } |
