Index: uts/usr/src/uts/common/sys/pcmcia.h =================================================================== --- uts.orig/usr/src/uts/common/sys/pcmcia.h +++ uts/usr/src/uts/common/sys/pcmcia.h @@ -275,6 +275,7 @@ struct pcmcia_mif { }; #define PR_WORDSIZE 8 /* bits in word */ +#define PR_MAP_SIZE (PCMCIA_MAX_SOCKETS / PR_WORDSIZE) #define PR_MASK 0x7 #define PR_GET(map, bit) (((uchar_t *)(map))[(bit)/PR_WORDSIZE] &\ (1 << ((bit) & PR_MASK))) @@ -283,10 +284,10 @@ struct pcmcia_mif { #define PR_CLEAR(map, bit) (((uchar_t *)(map))[(bit)/PR_WORDSIZE] &=\ ~(1 << ((bit) & PR_MASK))) #define PR_ADDR(map, bit) (((uchar_t *)(map)) + ((bit)/PR_WORDSIZE)) -#define PR_ZERO(map) bzero((caddr_t)map, sizeof (map)) +#define PR_ZERO(map) bzero((caddr_t)map, PR_MAP_SIZE) /* socket bit map */ -typedef uchar_t socket_enum_t[PCMCIA_MAX_SOCKETS/PR_WORDSIZE]; +typedef uchar_t socket_enum_t[PR_MAP_SIZE]; /* * Max resoruce limits - all of these have to be power-of-2 aligned Index: uts/usr/src/uts/common/pcmcia/nexus/pcmcia.c =================================================================== --- uts.orig/usr/src/uts/common/pcmcia/nexus/pcmcia.c +++ uts/usr/src/uts/common/pcmcia/nexus/pcmcia.c @@ -1775,13 +1775,13 @@ pcm_fix_bits(socket_enum_t src, socket_e if (dir == 0) { /* LEFT */ - for (i = 0; i <= (sizeof (dst) * PR_WORDSIZE) - num; i++) { + for (i = 0; i <= PCMCIA_MAX_SOCKETS - num; i++) { if (PR_GET(src, i)) PR_SET(dst, i + num); } } else { /* RIGHT */ - for (i = num; i < sizeof (dst) * PR_WORDSIZE; i++) { + for (i = num; i < PCMCIA_MAX_SOCKETS; i++) { if (PR_GET(src, i)) PR_SET(dst, i - num); }