From 7fc3ce7312fec9320aeffb1a6c6c6d4bf2408669 Mon Sep 17 00:00:00 2001 From: sbrissen Date: Wed, 23 Oct 2013 13:19:08 -0400 Subject: Add support for Note 8 (N5100 and N5110) Change-Id: I6c9798682f9f6349b37cb452353bd0c0e6958401 --- drivers/net/wireless/bcmdhd/dhd_sec_feature.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'drivers/net/wireless') diff --git a/drivers/net/wireless/bcmdhd/dhd_sec_feature.h b/drivers/net/wireless/bcmdhd/dhd_sec_feature.h index 933a78a..98a41a0 100755 --- a/drivers/net/wireless/bcmdhd/dhd_sec_feature.h +++ b/drivers/net/wireless/bcmdhd/dhd_sec_feature.h @@ -49,7 +49,8 @@ #define READ_MACADDR #endif /* CONFIG_ARCH_MSM7X30 */ -#if defined(CONFIG_MACH_GC1) || defined(CONFIG_MACH_U1_NA_SPR) || defined(CONFIG_MACH_V1) +#if defined(CONFIG_MACH_GC1) || defined(CONFIG_MACH_U1_NA_SPR) || defined(CONFIG_MACH_V1)\ + || defined(CONFIG_MACH_KONA) #undef USE_CID_CHECK #define READ_MACADDR #endif /* CONFIG_MACH_GC1 || CONFIG_MACH_U1_NA_SPR || CONFIG_MACH_V1 */ -- cgit v1.1 From 23c72d6d1716c1e6002089cf5d3a43477586e297 Mon Sep 17 00:00:00 2001 From: abmantis Date: Wed, 18 Dec 2013 23:53:47 +0000 Subject: filter multicast packages while suspended. in some crowded WLANs, with a lot of multicast packages circulating, the device would not enter deep sleep. this will allow the device to enter deep sleep. Change-Id: I72cfefe89af64a7152e644d5095a57823ef04f4e --- drivers/net/wireless/bcmdhd/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/net/wireless') diff --git a/drivers/net/wireless/bcmdhd/Makefile b/drivers/net/wireless/bcmdhd/Makefile index 40bc790..5121318 100644 --- a/drivers/net/wireless/bcmdhd/Makefile +++ b/drivers/net/wireless/bcmdhd/Makefile @@ -18,7 +18,7 @@ DHDCFLAGS += -Wall -Wstrict-prototypes -Dlinux -DLINUX -DBCMDRIVER \ DHDCFLAGS += -DCUSTOMER_HW4 DHDCFLAGS += -DDEBUGFS_CFG80211 -DHDCFLAGS += -DBLOCK_IPV6_PACKET -DPASS_IPV4_SUSPEND +DHDCFLAGS += -DBLOCK_IPV6_PACKET DHDCFLAGS += -DSUPPORT_DEEP_SLEEP DHDCFLAGS += -DSIMPLE_MAC_PRINT -- cgit v1.1 From 339b2cb7d4876f4acf7389c38fc85cc5e35801ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Tue, 9 Sep 2014 11:20:19 +0200 Subject: bcmdhd wireless: Fix off by one in initialization. An sprintf in dhd_write_macaddr wrote a rogue null byte after the buffer. Found with CONFIG_CC_STACKPROTECTOR=y (idea of Lanchon at XDA Developers [1]). [1]: http://forum.xda-developers.com/showthread.php?p=55306602 Panic, on a Samsung Galaxy S2 i9100, was: <0>[ 26.412257] c1 Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: bf013a2c <0>[ 26.412315] c1 <4>[ 26.412334] c1 Backtrace: <4>[ 26.412382] c1 [] (dump_backtrace+0x0/0x10c) from [] (dump_stack+0x18/0x1c) <4>[ 26.412439] c1 r6:e211e820 r5:c0ed4760 r4:c0f5c940 r3:271aed5c <4>[ 26.412496] c1 [] (dump_stack+0x0/0x1c) from [] (panic+0x80/0x1ac) <4>[ 26.412561] c1 [] (panic+0x0/0x1ac) from [] (init_oops_id+0x0/0x58) <4>[ 26.412613] c1 r3:271aed5c r2:271aed00 r1:bf013a2c r0:c0cb8880 <4>[ 26.412663] c1 r7:e273bc32 <4>[ 26.412742] c1 [] (__stack_chk_fail+0x0/0x1c) from [] (dhd_write_macaddr+0x2e4/0x310 [dhd]) <4>[ 26.412864] c1 [] (dhd_write_macaddr+0x0/0x310 [dhd]) from [] (dhd_bus_start+0x1a4/0x2e0 [dhd]) <4>[ 26.412985] c1 [] (dhd_bus_start+0x0/0x2e0 [dhd]) from [] (dhdsdio_probe+0x4a4/0x72c [dhd]) <4>[ 26.413097] c1 [] (dhdsdio_probe+0x0/0x72c [dhd]) from [] (bcmsdh_probe+0xf8/0x150 [dhd]) <4>[ 26.413206] c1 [] (bcmsdh_probe+0x0/0x150 [dhd]) from [] (bcmsdh_sdmmc_probe+0x54/0xbc [dhd]) <4>[ 26.413304] c1 [] (bcmsdh_sdmmc_probe+0x0/0xbc [dhd]) from [] (sdio_bus_probe+0xfc/0x108) <4>[ 26.413368] c1 r5:e2d97000 r4:e2d97008 <4>[ 26.413414] c1 [] (sdio_bus_probe+0x0/0x108) from [] (driver_probe_device+0x94/0x1a8) <4>[ 26.413474] c1 r8:00000000 r7:bf067414 r6:e2d9703c r5:c0f6ddb8 r4:e2d97008 <4>[ 26.413531] c1 r3:c09a7eec <4>[ 26.413563] c1 [] (driver_probe_device+0x0/0x1a8) from [] (__driver_attach+0x94/0x98) <4>[ 26.413624] c1 r7:e2e631e0 r6:e2d9703c r5:bf067414 r4:e2d97008 <4>[ 26.413683] c1 [] (__driver_attach+0x0/0x98) from [] (bus_for_each_dev+0x4c/0x94) <4>[ 26.413742] c1 r6:c0896878 r5:bf067414 r4:00000000 r3:c0896878 <4>[ 26.413799] c1 [] (bus_for_each_dev+0x0/0x94) from [] (driver_attach+0x24/0x28) <4>[ 26.413857] c1 r6:c0f02af0 r5:bf067414 r4:bf067414 <4>[ 26.413904] c1 [] (driver_attach+0x0/0x28) from [] (bus_add_driver+0x180/0x250) <4>[ 26.413970] c1 [] (bus_add_driver+0x0/0x250) from [] (driver_register+0x80/0x150) <4>[ 26.414037] c1 [] (driver_register+0x0/0x150) from [] (sdio_register_driver+0x2c/0x30) <4>[ 26.414131] c1 [] (sdio_register_driver+0x0/0x30) from [] (sdio_function_init+0x3c/0x8c [dhd]) <4>[ 26.414244] c1 [] (sdio_function_init+0x0/0x8c [dhd]) from [] (bcmsdh_register+0x1c/0x24 [dhd]) <4>[ 26.414311] c1 r5:00000004 r4:bf06a3c4 <4>[ 26.414398] c1 [] (bcmsdh_register+0x0/0x24 [dhd]) from [] (dhd_bus_register+0x24/0x48 [dhd]) <4>[ 26.414515] c1 [] (dhd_bus_register+0x0/0x48 [dhd]) from [] (init_module+0x18c/0x284 [dhd]) <4>[ 26.414610] c1 [] (init_module+0x0/0x284 [dhd]) from [] (do_one_initcall+0x128/0x1a8) <4>[ 26.414683] c1 [] (do_one_initcall+0x0/0x1a8) from [] (sys_init_module+0xdf8/0x1b1c) <4>[ 26.414756] c1 [] (sys_init_module+0x0/0x1b1c) from [] (ret_fast_syscall+0x0/0x30) <2>[ 26.414861] c0 CPU0: stopping <4>[ 26.414886] c0 Backtrace: <4>[ 26.414920] c0 [] (dump_backtrace+0x0/0x10c) from [] (dump_stack+0x18/0x1c) <4>[ 26.414977] c0 r6:c0d54000 r5:c0eb5d08 r4:00000006 r3:271aed5c <4>[ 26.415039] c0 [] (dump_stack+0x0/0x1c) from [] (do_IPI+0x258/0x29c) <4>[ 26.415102] c0 [] (do_IPI+0x0/0x29c) from [] (__irq_svc+0x80/0x130) <4>[ 26.415156] c0 Exception stack(0xc0d55ef0 to 0xc0d55f38) <4>[ 26.415197] c0 5ee0: 3b9ac9ff 540deacd 01c99e53 00072679 <4>[ 26.415258] c0 5f00: c0f5a468 00000000 c0d54000 00000000 c1b540a8 412fc091 00000000 c0d55f64 <4>[ 26.415317] c0 5f20: 540deacd c0d55f38 c06aa768 c065bd78 20000013 ffffffff <4>[ 26.415380] c0 [] (exynos4_enter_idle+0x0/0x174) from [] (cpuidle_idle_call+0xa4/0x120) <4>[ 26.415442] c0 r7:00000000 r6:00000001 r5:c0f815ac r4:c1b540b8 <4>[ 26.415498] c0 [] (cpuidle_idle_call+0x0/0x120) from [] (cpu_idle+0xc4/0x100) <4>[ 26.415554] c0 r8:4000406a r7:c0ba09a8 r6:c0f59ec4 r5:c0ebd8c4 r4:c0d54000 <4>[ 26.415610] c0 r3:c099a7ec <4>[ 26.415641] c0 [] (cpu_idle+0x0/0x100) from [] (rest_init+0x8c/0xa4) <4>[ 26.415694] c0 r7:c1b51180 r6:c0f59e00 r5:00000002 r4:c0d54000 <4>[ 26.415752] c0 [] (rest_init+0x0/0xa4) from [] (start_kernel+0x2dc/0x330) <4>[ 26.415807] c0 r5:c063d944 r4:c0eb5d34 <4>[ 26.415845] c0 [] (start_kernel+0x0/0x330) from [<40008044>] (0x40008044) Change-Id: Iaa907383e196fdf787ae4660977b58de79212de1 --- drivers/net/wireless/bcmdhd/dhd_custom_sec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'drivers/net/wireless') diff --git a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c index be129b5..9a29891 100755 --- a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c +++ b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c @@ -324,6 +324,8 @@ void get_customized_country_code(char *country_iso_code, wl_country_t *cspec) #define CIS_BUF_SIZE 512 #endif /* BCM4330_CHIP */ +#define MACBUFFER_SZ (sizeof("00:11:22:33:44:55\n")) + #ifdef READ_MACADDR int dhd_read_macaddr(struct dhd_info *dhd, struct ether_addr *mac) { @@ -1100,7 +1102,7 @@ int dhd_write_macaddr(struct ether_addr *mac) char *filepath_efs = MACINFO_EFS; struct file *fp_mac = NULL; - char buf[18] = {0}; + char buf[MACBUFFER_SZ] = {0}; mm_segment_t oldfs = {0}; int ret = -1; int retry_count = 0; @@ -1123,7 +1125,7 @@ startwrite: if (fp_mac->f_mode & FMODE_WRITE) { ret = fp_mac->f_op->write(fp_mac, (const char *)buf, - sizeof(buf), &fp_mac->f_pos); + sizeof(buf) - 1 /* skip null byte */, &fp_mac->f_pos); if (ret < 0) DHD_ERROR(("[WIFI] Mac address [%s] Failed to" " write into File: %s\n", buf, filepath_data)); @@ -1163,7 +1165,7 @@ startwrite: if (fp_mac->f_mode & FMODE_WRITE) { ret = fp_mac->f_op->write(fp_mac, (const char *)buf, - sizeof(buf), &fp_mac->f_pos); + sizeof(buf) - 1 /* skip null byte */, &fp_mac->f_pos); if (ret < 0) DHD_ERROR(("[WIFI] Mac address [%s] Failed to" " write into File: %s\n", buf, filepath_efs)); -- cgit v1.1 From 0ef5a06bceb576a1135770111577f7700fe1ef93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Tue, 9 Sep 2014 14:07:11 +0200 Subject: bcmdhd wireless: Fix more off by one errors. These were not detected by the stack protector, either because the functions where not called or because the corruption hits a local variable. Change-Id: I385c81b133ee09c28df56597df3fb25d9c063f43 --- drivers/net/wireless/bcmdhd/dhd_custom_sec.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'drivers/net/wireless') diff --git a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c index 9a29891..3dbfc9f 100755 --- a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c +++ b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c @@ -330,10 +330,10 @@ void get_customized_country_code(char *country_iso_code, wl_country_t *cspec) int dhd_read_macaddr(struct dhd_info *dhd, struct ether_addr *mac) { struct file *fp = NULL; - char macbuffer[18] = {0}; + char macbuffer[MACBUFFER_SZ] = {0}; mm_segment_t oldfs = {0}; char randommac[3] = {0}; - char buf[18] = {0}; + char buf[MACBUFFER_SZ] = {0}; char *filepath_efs = MACINFO_EFS; int ret = 0; @@ -358,7 +358,7 @@ start_readmac: if (fp->f_mode & FMODE_WRITE) { ret = fp->f_op->write(fp, (const char *)macbuffer, - sizeof(macbuffer), &fp->f_pos); + sizeof(macbuffer) - 1 /* skip null byte */, &fp->f_pos); if (ret < 0) DHD_ERROR(("[WIFI]MAC address [%s] Failed to write into File: %s\n", macbuffer, filepath_efs)); @@ -425,7 +425,7 @@ int dhd_write_rdwr_macaddr(struct ether_addr *mac) char *filepath_data = MACINFO; char *filepath_efs = MACINFO_EFS; struct file *fp_mac = NULL; - char buf[18] = {0}; + char buf[MACBUFFER_SZ] = {0}; mm_segment_t oldfs = {0}; int ret = -1; @@ -447,7 +447,7 @@ int dhd_write_rdwr_macaddr(struct ether_addr *mac) if (fp_mac->f_mode & FMODE_WRITE) { ret = fp_mac->f_op->write(fp_mac, (const char *)buf, - sizeof(buf), &fp_mac->f_pos); + sizeof(buf) - 1 /* skip null byte */, &fp_mac->f_pos); if (ret < 0) DHD_ERROR(("[WIFI] Mac address [%s] Failed" " to write into File: %s\n", buf, filepath_data)); @@ -469,7 +469,7 @@ int dhd_write_rdwr_macaddr(struct ether_addr *mac) if (fp_mac->f_mode & FMODE_WRITE) { ret = fp_mac->f_op->write(fp_mac, (const char *)buf, - sizeof(buf), &fp_mac->f_pos); + sizeof(buf) - 1 /* skip null byte */, &fp_mac->f_pos); if (ret < 0) DHD_ERROR(("[WIFI] Mac address [%s] Failed" " to write into File: %s\n", buf, filepath_efs)); @@ -490,9 +490,9 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, { struct file *fp_mac = NULL; struct file *fp_nvm = NULL; - char macbuffer[18] = {0}; + char macbuffer[MACBUFFER_SZ] = {0}; char randommac[3] = {0}; - char buf[18] = {0}; + char buf[MACBUFFER_SZ] = {0}; char *filepath_data = MACINFO; char *filepath_efs = MACINFO_EFS; #ifdef CONFIG_TARGET_LOCALE_NA @@ -502,7 +502,7 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, #endif char cur_mac[128] = {0}; char dummy_mac[ETHER_ADDR_LEN] = {0x00, 0x90, 0x4C, 0xC5, 0x12, 0x38}; - char cur_macbuffer[18] = {0}; + char cur_macbuffer[MACBUFFER_SZ] = {0}; int ret = -1; g_imac_flag = MACADDR_NONE; @@ -696,10 +696,10 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, int dhd_write_rdwr_korics_macaddr(struct dhd_info *dhd, struct ether_addr *mac) { struct file *fp = NULL; - char macbuffer[18] = {0}; + char macbuffer[MACBUFFER_SZ] = {0}; mm_segment_t oldfs = {0}; char randommac[3] = {0}; - char buf[18] = {0}; + char buf[MACBUFFER_SZ] = {0}; char *filepath_efs = MACINFO_EFS; int is_zeromac = 0; int ret = 0; @@ -732,7 +732,7 @@ int dhd_write_rdwr_korics_macaddr(struct dhd_info *dhd, struct ether_addr *mac) if (fp->f_mode & FMODE_WRITE) { ret = fp->f_op->write(fp, (const char *)macbuffer, - sizeof(macbuffer), &fp->f_pos); + sizeof(macbuffer) - 1 /* skip null byte */, &fp->f_pos); if (ret < 0) DHD_ERROR(("[WIFI] Mac address [%s]" " Failed to write into File:" @@ -830,7 +830,7 @@ static void dhd_dump_cis(const unsigned char *buf, int size) int i; for (i = 0; i < size; i++) { DHD_ERROR(("%02X ", buf[i])); - if ((i % 15) == 15) DHD_ERROR(("\n")); + if ((i % 15) == 15) DHD_ERROR(("\n")); /* FIXME: Will always be false */ } DHD_ERROR(("\n")); } -- cgit v1.1 From a3732c055167df76ff7afedcaa59b76be52bb567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Tue, 9 Sep 2014 14:58:30 +0200 Subject: bcmdhd wireless: Fix sprintf/sscanf format strings. %X is int. This is too wide for the chars used there, so use %hhx instead. Avoid undefined pointer casts from char* to unsigned int* in sscanf calls. Also use the already defined MACF and update it with %hhx instead of typing this long format string all over again. Add MACF_U which is the same as MACF but with uppercase hex (%hhX instead of %hhx). Change-Id: Idd2465e0d05bca9b05566abeec05a5ad59a577ad --- drivers/net/wireless/bcmdhd/bcmsdspi_linux.c | 2 +- drivers/net/wireless/bcmdhd/dhd_common.c | 2 +- drivers/net/wireless/bcmdhd/dhd_custom_sec.c | 106 +++++++++++++------------ drivers/net/wireless/bcmdhd/include/bcmutils.h | 3 +- drivers/net/wireless/bcmdhd/wl_iw.c | 2 +- 5 files changed, 60 insertions(+), 55 deletions(-) (limited to 'drivers/net/wireless') diff --git a/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c b/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c index 9e3922b..6d1d495 100755 --- a/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c +++ b/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c @@ -355,7 +355,7 @@ hexdump(char *pfx, unsigned char *msg, int msglen) for (i = 0; i < msglen; i++, col++) { if (col % 16 == 0) strcpy(buf, pfx); - sprintf(buf + strlen(buf), "%02x", msg[i]); + sprintf(buf + strlen(buf), "%02hhx", msg[i]); if ((col + 1) % 16 == 0) printf("%s\n", buf); else diff --git a/drivers/net/wireless/bcmdhd/dhd_common.c b/drivers/net/wireless/bcmdhd/dhd_common.c index c4ac414..6a25fc2 100644 --- a/drivers/net/wireless/bcmdhd/dhd_common.c +++ b/drivers/net/wireless/bcmdhd/dhd_common.c @@ -760,7 +760,7 @@ wl_show_host_event(wl_event_msg_t *event, void *event_data) datalen = ntoh32(event->datalen); /* debug dump of event messages */ - snprintf(eabuf, sizeof(eabuf), "%02x:%02x:%02x:%02x:%02x:%02x", + snprintf(eabuf, sizeof(eabuf), MACF, (uchar)event->addr.octet[0]&0xff, (uchar)event->addr.octet[1]&0xff, (uchar)event->addr.octet[2]&0xff, diff --git a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c index 3dbfc9f..7fab834 100755 --- a/drivers/net/wireless/bcmdhd/dhd_custom_sec.c +++ b/drivers/net/wireless/bcmdhd/dhd_custom_sec.c @@ -352,7 +352,7 @@ start_readmac: /* Generating the Random Bytes for 3 last octects of the MAC address */ get_random_bytes(randommac, 3); - sprintf(macbuffer, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(macbuffer, "%02X:%02X:%02X:%02hhX:%02hhX:%02hhX\n", 0x00, 0x12, 0x34, randommac[0], randommac[1], randommac[2]); DHD_ERROR(("[WIFI]The Random Generated MAC ID: %s\n", macbuffer)); @@ -388,10 +388,10 @@ start_readmac: } if (ret) - sscanf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), (unsigned int *)&(mac->octet[5])); + sscanf(buf, MACF_U, + &(mac->octet[0]), &(mac->octet[1]), + &(mac->octet[2]), &(mac->octet[3]), + &(mac->octet[4]), &(mac->octet[5])); else DHD_ERROR(("dhd_bus_start: Reading from the '%s' returns 0 bytes\n", filepath_efs)); @@ -432,7 +432,7 @@ int dhd_write_rdwr_macaddr(struct ether_addr *mac) if ((g_imac_flag != MACADDR_COB) && (g_imac_flag != MACADDR_MOD)) return 0; - sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(buf, MACF_U "\n", mac->octet[0], mac->octet[1], mac->octet[2], mac->octet[3], mac->octet[4], mac->octet[5]); @@ -521,11 +521,12 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, } else { DHD_ERROR(("MAC (OTP) : " "[%02X:%02X:%02X:%02X:%02X:%02X] \r\n", - cur_mac[0], cur_mac[1], cur_mac[2], cur_mac[3], - cur_mac[4], cur_mac[5])); + (unsigned)cur_mac[0], (unsigned)cur_mac[1], + (unsigned)cur_mac[2], (unsigned)cur_mac[3], + (unsigned)cur_mac[4], (unsigned)cur_mac[5])); } - sprintf(cur_macbuffer, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(cur_macbuffer, MACF_U "\n", cur_mac[0], cur_mac[1], cur_mac[2], cur_mac[3], cur_mac[4], cur_mac[5]); @@ -554,13 +555,13 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, " Trying Random MAC.\n")); g_imac_flag = MACADDR_MOD_RANDOM; } else { - sscanf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), - (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), - (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), - (unsigned int *)&(mac->octet[5])); + sscanf(buf, MACF_U, + &(mac->octet[0]), + &(mac->octet[1]), + &(mac->octet[2]), + &(mac->octet[3]), + &(mac->octet[4]), + &(mac->octet[5])); /* current MAC address is same as previous one */ if (memcmp(cur_mac, mac->octet, ETHER_ADDR_LEN) == 0) { g_imac_flag = MACADDR_NONE; @@ -603,13 +604,13 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, " Trying Random MAC.\n")); g_imac_flag = MACADDR_MOD_RANDOM; } else { - sscanf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), - (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), - (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), - (unsigned int *)&(mac->octet[5])); + sscanf(buf, MACF_U, + &(mac->octet[0]), + &(mac->octet[1]), + &(mac->octet[2]), + &(mac->octet[3]), + &(mac->octet[4]), + &(mac->octet[5])); /* current MAC address is same as previous one */ if (memcmp(cur_mac, mac->octet, ETHER_ADDR_LEN) == 0) { g_imac_flag = MACADDR_NONE; @@ -644,13 +645,13 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, (strncmp(buf, "00:00:00:00:00:00", 17) == 0)) { g_imac_flag = MACADDR_COB_RANDOM; } else { - sscanf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), - (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), - (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), - (unsigned int *)&(mac->octet[5])); + sscanf(buf, MACF_U, + &(mac->octet[0]), + &(mac->octet[1]), + &(mac->octet[2]), + &(mac->octet[3]), + &(mac->octet[4]), + &(mac->octet[5])); /* Writing Newly generated MAC ID to the Dongle */ if (_dhd_set_mac_address(dhd, 0, mac) == 0) { DHD_INFO(("%s: MACID is overwritten\n", @@ -667,18 +668,18 @@ int dhd_check_rdwr_macaddr(struct dhd_info *dhd, dhd_pub_t *dhdp, if ((g_imac_flag == MACADDR_COB_RANDOM) || (g_imac_flag == MACADDR_MOD_RANDOM)) { get_random_bytes(randommac, 3); - sprintf(macbuffer, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(macbuffer, "%02X:%02X:%02X:%02hhX:%02hhX:%02hhX\n", 0x60, 0xd0, 0xa9, randommac[0], randommac[1], randommac[2]); DHD_ERROR(("[WIFI] The Random Generated MAC ID : %s\n", macbuffer)); - sscanf(macbuffer, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), - (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), - (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), - (unsigned int *)&(mac->octet[5])); + sscanf(macbuffer, MACF_U, + &(mac->octet[0]), + &(mac->octet[1]), + &(mac->octet[2]), + &(mac->octet[3]), + &(mac->octet[4]), + &(mac->octet[5])); if (_dhd_set_mac_address(dhd, 0, mac) == 0) { DHD_INFO(("%s: MACID is overwritten\n", __FUNCTION__)); g_imac_flag = MACADDR_COB; @@ -723,7 +724,7 @@ int dhd_write_rdwr_korics_macaddr(struct dhd_info *dhd, struct ether_addr *mac) */ get_random_bytes(randommac, 3); - sprintf(macbuffer, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(macbuffer, "%02X:%02X:%02X:%02hhX:%02hhX:%02hhX\n", 0x60, 0xd0, 0xa9, randommac[0], randommac[1], randommac[2]); DHD_ERROR(("[WIFI] The Random Generated MAC ID : %s\n", @@ -763,13 +764,13 @@ int dhd_write_rdwr_korics_macaddr(struct dhd_info *dhd, struct ether_addr *mac) } if (ret) - sscanf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", - (unsigned int *)&(mac->octet[0]), - (unsigned int *)&(mac->octet[1]), - (unsigned int *)&(mac->octet[2]), - (unsigned int *)&(mac->octet[3]), - (unsigned int *)&(mac->octet[4]), - (unsigned int *)&(mac->octet[5])); + sscanf(buf, MACF_U, + &(mac->octet[0]), + &(mac->octet[1]), + &(mac->octet[2]), + &(mac->octet[3]), + &(mac->octet[4]), + &(mac->octet[5])); else DHD_INFO(("dhd_bus_start: Reading from the" " '%s' returns 0 bytes\n", filepath_efs)); @@ -829,7 +830,7 @@ static void dhd_dump_cis(const unsigned char *buf, int size) { int i; for (i = 0; i < size; i++) { - DHD_ERROR(("%02X ", buf[i])); + DHD_ERROR(("%02X ", (unsigned)buf[i])); if ((i % 15) == 15) DHD_ERROR(("\n")); /* FIXME: Will always be false */ } DHD_ERROR(("\n")); @@ -1056,11 +1057,14 @@ int dhd_check_module_mac(dhd_pub_t *dhd, struct ether_addr *mac) if (ret < 0) { DHD_TRACE(("%s: CIS reading failed, err=%d\n", __func__, ret)); - sprintf(otp_mac_buf, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(otp_mac_buf, MACF_U "\n", mac->octet[0], mac->octet[1], mac->octet[2], mac->octet[3], mac->octet[4], mac->octet[5]); DHD_ERROR(("%s: Check module mac by legacy FW : %02X:%02X:%02X\n", - __func__, mac->octet[0], mac->octet[4], mac->octet[5])); + __func__, + (unsigned)mac->octet[0], + (unsigned)mac->octet[4], + (unsigned)mac->octet[5])); } else { unsigned char mac_id[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #ifdef DUMP_CIS @@ -1073,7 +1077,7 @@ int dhd_check_module_mac(dhd_pub_t *dhd, struct ether_addr *mac) mac_id[4] = cis_buf[CIS_MAC_OFFSET + 4]; mac_id[5] = cis_buf[CIS_MAC_OFFSET + 5]; - sprintf(otp_mac_buf, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(otp_mac_buf, MACF_U "\n", mac_id[0], mac_id[1], mac_id[2], mac_id[3], mac_id[4], mac_id[5]); DHD_ERROR(("[WIFI]mac_id is setted from OTP \n")); @@ -1109,7 +1113,7 @@ int dhd_write_macaddr(struct ether_addr *mac) startwrite: - sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X\n", + sprintf(buf, MACF_U "\n", mac->octet[0], mac->octet[1], mac->octet[2], mac->octet[3], mac->octet[4], mac->octet[5]); diff --git a/drivers/net/wireless/bcmdhd/include/bcmutils.h b/drivers/net/wireless/bcmdhd/include/bcmutils.h index 1b21327..90f8f40 100644 --- a/drivers/net/wireless/bcmdhd/include/bcmutils.h +++ b/drivers/net/wireless/bcmdhd/include/bcmutils.h @@ -669,7 +669,8 @@ extern void *_bcmutils_dummy_fn; #define CRC32_GOOD_VALUE 0xdebb20e3 -#define MACF "%02x:%02x:%02x:%02x:%02x:%02x" +#define MACF "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx" +#define MACF_U "%02hhX:%02hhX:%02hhX:%02hhX:%02hhX:%02hhX" /* upper case hex */ #define ETHERP_TO_MACF(ea) ((struct ether_addr *) (ea))->octet[0], \ ((struct ether_addr *) (ea))->octet[1], \ ((struct ether_addr *) (ea))->octet[2], \ diff --git a/drivers/net/wireless/bcmdhd/wl_iw.c b/drivers/net/wireless/bcmdhd/wl_iw.c index b2acd6a..16a8911 100644 --- a/drivers/net/wireless/bcmdhd/wl_iw.c +++ b/drivers/net/wireless/bcmdhd/wl_iw.c @@ -2423,7 +2423,7 @@ wl_iw_set_encodeext( for (j = 0; j < (WSEC_MAX_PSK_LEN / 2); j++) { - sprintf(charptr, "%02x", iwe->key[j]); + sprintf(charptr, "%02hhx", iwe->key[j]); charptr += 2; } len = strlen(keystring); -- cgit v1.1