[media] drxk: Fix a bug at some switches that broke DVB-T
authorMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 15 Jul 2011 04:14:17 +0000 (01:14 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 27 Jul 2011 20:56:03 +0000 (17:56 -0300)
commit320ed23ebf135a3403a7068ede7ca7915675bd47
treece029de18fb37e15d54504601a0c6b4cd379ce52
parentc4c3a3d32a2eac18dba04683bb5b7357402405c7
[media] drxk: Fix a bug at some switches that broke DVB-T

The error propagation changeset c23bf4402 broke the DVB-T
code.

The legacy way for propagate errors was:

do {
status = foo_func()
if (status < 0)
break;
} while (0);
return status;

However, on a few places, it was doing:
do {
switch(foo) {
case bar:
status = foo_func()
if (status < 0)
break;
break;
}
switch(foo2) {
case bar:
status = foo_func()
if (status < 0)
break;
break;
}
...
} while (0);
return (status)

The inner error break were not working, as it were breaking only
the switch, instead of the do. The solution used were to do a
s/break/goto error/ at the inner breaks, but preserving the last
break. Onfortunately, on a few switches, the replacement were
applied also to the final break for the case statements.

Fix the broken logic, by reverting them to break, where pertinent,
in order to fix DVB-T support.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/drxk_hard.c