]> git.sur5r.net Git - u-boot/commitdiff
powerpc: mpc85xx/mpc86xx: Fix off-by-one boundary checking with ARRAY_SIZE
authorAxel Lin <axel.lin@ingics.com>
Sun, 26 May 2013 07:00:30 +0000 (15:00 +0800)
committerAndy Fleming <afleming@freescale.com>
Thu, 20 Jun 2013 22:08:51 +0000 (17:08 -0500)
If a variable is used as array subscript, it's valid value range is
0 ... ARRAY_SIZE -1.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
19 files changed:
arch/powerpc/cpu/mpc85xx/mpc8536_serdes.c
arch/powerpc/cpu/mpc85xx/mpc8544_serdes.c
arch/powerpc/cpu/mpc85xx/mpc8548_serdes.c
arch/powerpc/cpu/mpc85xx/mpc8568_serdes.c
arch/powerpc/cpu/mpc85xx/mpc8569_serdes.c
arch/powerpc/cpu/mpc85xx/mpc8572_serdes.c
arch/powerpc/cpu/mpc85xx/p1010_serdes.c
arch/powerpc/cpu/mpc85xx/p1021_serdes.c
arch/powerpc/cpu/mpc85xx/p1022_serdes.c
arch/powerpc/cpu/mpc85xx/p1023_serdes.c
arch/powerpc/cpu/mpc85xx/p2020_serdes.c
arch/powerpc/cpu/mpc85xx/p2041_serdes.c
arch/powerpc/cpu/mpc85xx/p3041_serdes.c
arch/powerpc/cpu/mpc85xx/p4080_serdes.c
arch/powerpc/cpu/mpc85xx/p5020_serdes.c
arch/powerpc/cpu/mpc85xx/p5040_serdes.c
arch/powerpc/cpu/mpc85xx/t1040_serdes.c
arch/powerpc/cpu/mpc86xx/mpc8610_serdes.c
arch/powerpc/cpu/mpc86xx/mpc8641_serdes.c

index 6dadeb8cabc7d9fc3a3d9c133d63a47b959b0a07..ec96e81ed5ecf5c5c35b00e3dd5b8be485230724 100644 (file)
@@ -228,7 +228,7 @@ void fsl_serdes_init(void)
                break;
        }
 
-       if (srds1_io_sel > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds1_io_sel >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[SRDS1_IO_SEL] = %d\n", srds1_io_sel);
                return;
        }
@@ -237,7 +237,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds2_io_sel > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds2_io_sel >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[SRDS2_IO_SEL] = %d\n", srds2_io_sel);
                return;
        }
index 7c490972a55f9388c0f4027d31dfd0b8ee8fccf4..3483366e6d08da1116c7f925d696ac6e90ab6339 100644 (file)
@@ -68,7 +68,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
@@ -77,7 +77,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index 76288cd568e648eeb9ea4f76fcb7022e9af779d3..c9eea15d3cd4a097602b419fb03302a926fdbfc7 100644 (file)
@@ -53,7 +53,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL] = %x\n", srds1_cfg);
 
-       if (srds1_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds1_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL] = %d\n", srds1_cfg);
                return ;
        }
index 258263739f2770045f3d49f6e178ffa8f0022e47..49a02906202def52cbfe4e7f5152f7ce7f5c8249 100644 (file)
@@ -53,7 +53,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index f480c2609d6b629ac4a8e1cc2a1003ef3582cea9..7af6aff25957ee94639d15cb325e6277ec0f9a1b 100644 (file)
@@ -62,7 +62,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index 2ff5d9a060afc74016eac18f6e7241974d179c3b..fcccb52b68281c97b9e86bfbd89f9db807cddcca 100644 (file)
@@ -57,7 +57,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index e8a0387ca0aab0ca08855938c692e9f606b36a26..1f7dba0d6f7a57b4882d563c90e9e453cf6dd031 100644 (file)
@@ -54,7 +54,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
@@ -63,7 +63,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index 1849c1642cf284d94187f8fe8021a67ba1e59058..d6d2696e0702a7cca22e35d80d1a9c559470a213 100644 (file)
@@ -73,7 +73,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index e4c9c2210054a9346efe9059b6a42cb745aca487..ed4992053c031cf1c82a4117f325d927a1a9887c 100644 (file)
@@ -93,7 +93,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
@@ -102,7 +102,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index c8ab5d6f339a7aea12d20571a646e867f0a730a4..0b4ae90c242707be12580c2123197faded35d25a 100644 (file)
@@ -41,7 +41,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index 389ff6bd2804bebb916b0b0b5b000965b936e412..01af3337063b6e660f156c36529c89a24d3b9967 100644 (file)
@@ -61,7 +61,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index eec4ffe516ad8acdf189524649b5009e4ccf9922..87335c9444d7766c068f8e5c1d2771ca7dd3f94f 100644 (file)
@@ -90,7 +90,7 @@ int is_serdes_prtcl_valid(u32 prtcl)
        u32 svr = get_svr();
        u32 ver = SVR_SOC_VER(svr);
 
-       if (prtcl > ARRAY_SIZE(serdes_cfg_tbl))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
 
        /* P2040[e] does not support XAUI */
index fba9ff245fdb5755a1edbd71bedba498acb2825e..a36dcd542697080df9871ccdc5116e6949f56888 100644 (file)
@@ -139,7 +139,7 @@ enum srds_prtcl serdes_get_prtcl(int cfg, int lane)
 int is_serdes_prtcl_valid(u32 prtcl) {
        int i;
 
-       if (prtcl > ARRAY_SIZE(serdes_cfg_tbl))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
 
        for (i = 0; i < SRDS_MAX_LANES; i++) {
index 87bd7952930d87ed93e5c555e16c4bae5c188365..94ec445037248fa438b7e59ae2088580244221ad 100644 (file)
@@ -86,7 +86,7 @@ enum srds_prtcl serdes_get_prtcl(int cfg, int lane)
 int is_serdes_prtcl_valid(u32 prtcl) {
        int i;
 
-       if (prtcl > ARRAY_SIZE(serdes_cfg_tbl))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
 
        for (i = 0; i < SRDS_MAX_LANES; i++) {
index fba9ff245fdb5755a1edbd71bedba498acb2825e..a36dcd542697080df9871ccdc5116e6949f56888 100644 (file)
@@ -139,7 +139,7 @@ enum srds_prtcl serdes_get_prtcl(int cfg, int lane)
 int is_serdes_prtcl_valid(u32 prtcl) {
        int i;
 
-       if (prtcl > ARRAY_SIZE(serdes_cfg_tbl))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
 
        for (i = 0; i < SRDS_MAX_LANES; i++) {
index 890b88e4e337233e575923de2f8c2f98f57e1463..d646e8561c46583dceb8c5c86c8b9c969159ee14 100644 (file)
@@ -105,7 +105,7 @@ int is_serdes_prtcl_valid(u32 prtcl)
 {
        int i;
 
-       if (prtcl > ARRAY_SIZE(serdes_cfg_tbl))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
 
        for (i = 0; i < SRDS_MAX_LANES; i++) {
index 8261e034767d77a023a406b5b76720832b0cf0ab..19add9f96c0a7f6705e0bb363e43330a40d59ce3 100644 (file)
@@ -81,7 +81,7 @@ int is_serdes_prtcl_valid(int serdes, u32 prtcl)
 {
        int i;
 
-       if (prtcl > (ARRAY_SIZE(serdes_cfg_tbl[serdes])))
+       if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl[serdes]))
                return 0;
 
        for (i = 0; i < SRDS_MAX_LANES; i++) {
index 0dc1975bf9b271445d08cc56797a9016f93ce269..0342e34654e2a5cabb580d686e623f693b588e5a 100644 (file)
@@ -64,7 +64,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
@@ -73,7 +73,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
index 3ae9069f1b81418b96821b936c8459b6e5c27f28..21c5ddbfacc983aaef7615f6003020ac50b3e2c0 100644 (file)
@@ -73,7 +73,7 @@ void fsl_serdes_init(void)
 
        debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
 
-       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes1_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }
@@ -82,7 +82,7 @@ void fsl_serdes_init(void)
                serdes1_prtcl_map |= (1 << lane_prtcl);
        }
 
-       if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
+       if (srds_cfg >= ARRAY_SIZE(serdes2_cfg_tbl)) {
                printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
                return;
        }