mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (11674): ivtv: fix incorrect bit tests
Found the coccinelle tool. Thanks-to: Julia Lawall <julia@diku.dk> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
7564f67d5b
commit
ec105a42ac
|
@ -180,7 +180,7 @@ int ivtv_set_speed(struct ivtv *itv, int speed)
|
||||||
|
|
||||||
/* Wait for any DMA to finish */
|
/* Wait for any DMA to finish */
|
||||||
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
||||||
while (itv->i_flags & IVTV_F_I_DMA) {
|
while (test_bit(IVTV_F_I_DMA, &itv->i_flags)) {
|
||||||
got_sig = signal_pending(current);
|
got_sig = signal_pending(current);
|
||||||
if (got_sig)
|
if (got_sig)
|
||||||
break;
|
break;
|
||||||
|
@ -1710,7 +1710,8 @@ static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
|
||||||
we are waiting unlock first and later lock again. */
|
we are waiting unlock first and later lock again. */
|
||||||
mutex_unlock(&itv->serialize_lock);
|
mutex_unlock(&itv->serialize_lock);
|
||||||
prepare_to_wait(&itv->event_waitq, &wait, TASK_INTERRUPTIBLE);
|
prepare_to_wait(&itv->event_waitq, &wait, TASK_INTERRUPTIBLE);
|
||||||
if ((itv->i_flags & (IVTV_F_I_EV_DEC_STOPPED|IVTV_F_I_EV_VSYNC)) == 0)
|
if (!test_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags) &&
|
||||||
|
!test_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags))
|
||||||
schedule();
|
schedule();
|
||||||
finish_wait(&itv->event_waitq, &wait);
|
finish_wait(&itv->event_waitq, &wait);
|
||||||
mutex_lock(&itv->serialize_lock);
|
mutex_lock(&itv->serialize_lock);
|
||||||
|
|
|
@ -196,7 +196,7 @@ static int stream_enc_dma_append(struct ivtv_stream *s, u32 data[CX2341X_MBOX_MA
|
||||||
bytes_needed, s->name);
|
bytes_needed, s->name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (rc && !s->buffers_stolen && (s->s_flags & IVTV_F_S_APPL_IO)) {
|
if (rc && !s->buffers_stolen && test_bit(IVTV_F_S_APPL_IO, &s->s_flags)) {
|
||||||
IVTV_WARN("All %s stream buffers are full. Dropping data.\n", s->name);
|
IVTV_WARN("All %s stream buffers are full. Dropping data.\n", s->name);
|
||||||
IVTV_WARN("Cause: the application is not reading fast enough.\n");
|
IVTV_WARN("Cause: the application is not reading fast enough.\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1063,7 +1063,8 @@ static int ivtv_yuv_udma_frame(struct ivtv *itv, struct ivtv_dma_frame *args)
|
||||||
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
||||||
/* if no UDMA is pending and no UDMA is in progress, then the DMA
|
/* if no UDMA is pending and no UDMA is in progress, then the DMA
|
||||||
is finished */
|
is finished */
|
||||||
while (itv->i_flags & (IVTV_F_I_UDMA_PENDING | IVTV_F_I_UDMA)) {
|
while (test_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags) ||
|
||||||
|
test_bit(IVTV_F_I_UDMA, &itv->i_flags)) {
|
||||||
/* don't interrupt if the DMA is in progress but break off
|
/* don't interrupt if the DMA is in progress but break off
|
||||||
a still pending DMA. */
|
a still pending DMA. */
|
||||||
got_sig = signal_pending(current);
|
got_sig = signal_pending(current);
|
||||||
|
|
|
@ -298,7 +298,8 @@ static int ivtvfb_prep_dec_dma_to_device(struct ivtv *itv,
|
||||||
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
|
||||||
/* if no UDMA is pending and no UDMA is in progress, then the DMA
|
/* if no UDMA is pending and no UDMA is in progress, then the DMA
|
||||||
is finished */
|
is finished */
|
||||||
while (itv->i_flags & (IVTV_F_I_UDMA_PENDING | IVTV_F_I_UDMA)) {
|
while (test_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags) ||
|
||||||
|
test_bit(IVTV_F_I_UDMA, &itv->i_flags)) {
|
||||||
/* don't interrupt if the DMA is in progress but break off
|
/* don't interrupt if the DMA is in progress but break off
|
||||||
a still pending DMA. */
|
a still pending DMA. */
|
||||||
got_sig = signal_pending(current);
|
got_sig = signal_pending(current);
|
||||||
|
|
Loading…
Reference in New Issue