diff --git a/bcm/bcm.c b/bcm/bcm.c
index 65a54ded24bbafba7dce87fe6d6c44ec4ec28b33..0f2b21b2a30bf43eb6fb7999c937f3e78d4f2d13 100644
--- a/bcm/bcm.c
+++ b/bcm/bcm.c
@@ -75,7 +75,7 @@ static int bcm_eth_get_unit_port(const char *ifname, int *unit, int *port)
 	if (!data.port && data.port_map) {
 		unsigned int portmap = data.port_map;
 
-		for (i = 0; i < sizeof(portmap); i++) {
+		for (i = 0; i < 8 * sizeof(portmap); i++) {
 			if (!!(portmap & (1 << i))) {
 				*port = i;
 				break;