]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fix for integer overflow in hd6457[02] driver code
authorKrzysztof Halasa <khc@pm.waw.pl>
Sun, 5 Sep 2004 11:09:12 +0000 (07:09 -0400)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sun, 5 Sep 2004 11:09:12 +0000 (07:09 -0400)
The attached patch fixes an integer overflow in drivers for N2, C101,
PCI200SYN WAN cards (brv * port->settings.clock_rate overflowed at
requested clock rate of 8*1024*1024 bps, problem noted by Nagaraj Kanniah).

drivers/net/wan/hd6457x.c

index b7f6504a5abfd57386f5c6105c709306ac568f37..690a02fdfb833a0236df4375557340f68b994792 100644 (file)
@@ -463,8 +463,8 @@ static void sca_set_port(port_t *port)
                        brv >>= 1; /* brv = 2^9 = 512 max in specs */
 
                        /* Baud Rate = CLOCK_BASE / TMC / 2^BR */
-                       tmc = CLOCK_BASE / (brv * port->settings.clock_rate);
-               }while(br > 1 && tmc <= 128);
+                       tmc = CLOCK_BASE / brv / port->settings.clock_rate;
+               }while (br > 1 && tmc <= 128);
 
                if (tmc < 1) {
                        tmc = 1;
@@ -473,7 +473,7 @@ static void sca_set_port(port_t *port)
                } else if (tmc > 255)
                        tmc = 256; /* tmc=0 means 256 - low baud rates */
 
-               port->settings.clock_rate = CLOCK_BASE / (brv * tmc);
+               port->settings.clock_rate = CLOCK_BASE / brv / tmc;
        } else {
                br = 9; /* Minimum clock rate */
                tmc = 256;      /* 8bit = 0 */