Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=33f25b42753f464c5927e8b828352333780c14bd
Commit:     33f25b42753f464c5927e8b828352333780c14bd
Parent:     0be4375410f1ecc917f3c0caf8f98908d357c93f
Author:     Michael Krufky <[EMAIL PROTECTED]>
AuthorDate: Sat Dec 29 21:46:01 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:04:34 2008 -0200

    V4L/DVB (6957): tda18271: fail table lookups if frequency is out of range
    
    Signed-off-by: Michael Krufky <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/dvb/frontends/tda18271-fe.c     |    5 ----
 drivers/media/dvb/frontends/tda18271-tables.c |   28 +++++++++++++++++-------
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/drivers/media/dvb/frontends/tda18271-fe.c 
b/drivers/media/dvb/frontends/tda18271-fe.c
index d5807c9..739ecfe 100644
--- a/drivers/media/dvb/frontends/tda18271-fe.c
+++ b/drivers/media/dvb/frontends/tda18271-fe.c
@@ -502,11 +502,6 @@ static int tda18271_calc_rf_cal(struct dvb_frontend *fe, 
u32 *freq)
        if (ret < 0)
                goto fail;
 
-       /* VHF_Low band only */
-       if (0 == val) {
-               ret = -ERANGE;
-               goto fail;
-       }
        regs[R_EB14] = val;
 fail:
        return ret;
diff --git a/drivers/media/dvb/frontends/tda18271-tables.c 
b/drivers/media/dvb/frontends/tda18271-tables.c
index e10a93b..f8202c4 100644
--- a/drivers/media/dvb/frontends/tda18271-tables.c
+++ b/drivers/media/dvb/frontends/tda18271-tables.c
@@ -273,6 +273,7 @@ int tda18271_lookup_pll_map(enum tda18271_map_type map_type,
        struct tda18271_pll_map *map = NULL;
        unsigned int i = 0;
        char *map_name;
+       int ret = 0;
 
        switch (map_type) {
        case MAIN_PLL:
@@ -291,12 +292,17 @@ int tda18271_lookup_pll_map(enum tda18271_map_type 
map_type,
 
        if (!map) {
                tda_warn("%s map is not set!\n", map_name);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto fail;
        }
 
        while ((map[i].lomax * 1000) < *freq) {
-               if (map[i + 1].lomax == 0)
+               if (map[i].lomax == 0) {
+                       tda_map("%s: frequency (%d) out of range\n",
+                               map_name, *freq);
+                       ret = -ERANGE;
                        break;
+               }
                i++;
        }
        *post_div = map[i].pd;
@@ -304,8 +310,8 @@ int tda18271_lookup_pll_map(enum tda18271_map_type map_type,
 
        tda_map("%s: post div = 0x%02x, div = 0x%02x\n",
                map_name, *post_div, *div);
-
-       return 0;
+fail:
+       return ret;
 }
 
 int tda18271_lookup_map(enum tda18271_map_type map_type, u32 *freq, u8 *val)
@@ -313,6 +319,7 @@ int tda18271_lookup_map(enum tda18271_map_type map_type, 
u32 *freq, u8 *val)
        struct tda18271_map *map = NULL;
        unsigned int i = 0;
        char *map_name;
+       int ret = 0;
 
        switch (map_type) {
        case BP_FILTER:
@@ -347,19 +354,24 @@ int tda18271_lookup_map(enum tda18271_map_type map_type, 
u32 *freq, u8 *val)
 
        if (!map) {
                tda_warn("%s map is not set!\n", map_name);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto fail;
        }
 
        while ((map[i].rfmax * 1000) < *freq) {
-               if (map[i + 1].rfmax == 0)
+               if (map[i].rfmax == 0) {
+                       tda_map("%s: frequency (%d) out of range\n",
+                               map_name, *freq);
+                       ret = -ERANGE;
                        break;
+               }
                i++;
        }
        *val = map[i].val;
 
        tda_map("%s: 0x%02x\n", map_name, *val);
-
-       return 0;
+fail:
+       return ret;
 }
 
 /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to