diff options
author | Michael Krufky <mkrufky@kernellabs.com> | 2010-05-03 01:10:15 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-02 13:48:43 -0400 |
commit | fab9bfbed22f91f271a93a3dfa142179a2278935 (patch) | |
tree | c2b8e9c63afa7f84380be2be9f509f2bd9314469 /drivers/media/common | |
parent | 4359e5b5ba3b746cd02bd3a18d576b11c0843419 (diff) |
V4L/DVB: tda18271: fix error detection during initialization of first instance
Fix error detection of failures during initialization of first instance:
Dont pass a function into the tda_fail macro. Instead, save the function
return value and pass that into the tda_fail macro.
This prevents the function from being called twice in cases of failure,
for example:
[19026.074070] tuner 4-0060: chip found @ 0xc0 (device #0)
[19026.087755] tda18271 4-0060: creating new instance
[19026.089965] Unknown device detected @ 4-0060, device not supported.
[19026.092233] Unknown device detected @ 4-0060, device not supported.
[19026.092241] tda18271_attach: [4-0060|M] error -22 on line 1275
[19026.092327] tda18271 4-0060: destroying instance
Signed-off-by: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/common')
-rw-r--r-- | drivers/media/common/tuners/tda18271-fe.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c index b2e15456d5f3..7955e49a3440 100644 --- a/drivers/media/common/tuners/tda18271-fe.c +++ b/drivers/media/common/tuners/tda18271-fe.c | |||
@@ -1249,7 +1249,7 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr, | |||
1249 | struct tda18271_config *cfg) | 1249 | struct tda18271_config *cfg) |
1250 | { | 1250 | { |
1251 | struct tda18271_priv *priv = NULL; | 1251 | struct tda18271_priv *priv = NULL; |
1252 | int instance; | 1252 | int instance, ret; |
1253 | 1253 | ||
1254 | mutex_lock(&tda18271_list_mutex); | 1254 | mutex_lock(&tda18271_list_mutex); |
1255 | 1255 | ||
@@ -1268,10 +1268,12 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr, | |||
1268 | priv->cal_initialized = false; | 1268 | priv->cal_initialized = false; |
1269 | mutex_init(&priv->lock); | 1269 | mutex_init(&priv->lock); |
1270 | 1270 | ||
1271 | if (tda_fail(tda18271_get_id(fe))) | 1271 | ret = tda18271_get_id(fe); |
1272 | if (tda_fail(ret)) | ||
1272 | goto fail; | 1273 | goto fail; |
1273 | 1274 | ||
1274 | if (tda_fail(tda18271_assign_map_layout(fe))) | 1275 | ret = tda18271_assign_map_layout(fe); |
1276 | if (tda_fail(ret)) | ||
1275 | goto fail; | 1277 | goto fail; |
1276 | 1278 | ||
1277 | mutex_lock(&priv->lock); | 1279 | mutex_lock(&priv->lock); |