diff options
author | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2017-06-26 15:33:56 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2017-07-20 23:25:41 +0300 |
commit | 1ad371deb9b0be142dca205611a56854a37fc48d (patch) | |
tree | 096d5557af2c8b08fc93269fd011766658927c01 /drivers/media/usb/pvrusb2/pvrusb2-encoder.c | |
parent | f3b38dcaa4768f13c7009267b7eef1c94298e9a2 (diff) | |
download | linux-1ad371deb9b0be142dca205611a56854a37fc48d.tar.xz |
media: pvrusb2: fix the retry logic
As reported by this warning:
drivers/media/usb/pvrusb2/pvrusb2-encoder.c:263 pvr2_encoder_cmd() warn: continue to end of do { ... } while(0); loop
There's an issue at the retry logic there: the current logic is:
do {
if (need_to_retry)
continue;
some_code();
} while (0);
Well, that won't work, as continue will make it test for zero, and
abort the loop. So, change the loop to:
while (1) {
if (need_to_retry)
continue;
some_code();
break;
};
With seems to be what's actually expected there.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media/usb/pvrusb2/pvrusb2-encoder.c')
-rw-r--r-- | drivers/media/usb/pvrusb2/pvrusb2-encoder.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-encoder.c b/drivers/media/usb/pvrusb2/pvrusb2-encoder.c index ca637074fa1f..43e43404095f 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-encoder.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-encoder.c @@ -198,7 +198,7 @@ static int pvr2_encoder_cmd(void *ctxt, } - LOCK_TAKE(hdw->ctl_lock); do { + LOCK_TAKE(hdw->ctl_lock); while (1) { if (!hdw->state_encoder_ok) { ret = -EIO; @@ -293,9 +293,9 @@ rdData[0]); wrData[0] = 0x0; ret = pvr2_encoder_write_words(hdw,MBOX_BASE,wrData,1); - if (ret) break; + break; - } while(0); LOCK_GIVE(hdw->ctl_lock); + }; LOCK_GIVE(hdw->ctl_lock); return ret; } |