aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_p2p.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_p2p.c b/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_p2p.c
index 07794b66e..f5de89f64 100644
--- a/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_p2p.c
+++ b/drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/gl_p2p.c
@@ -1258,8 +1258,8 @@ BOOLEAN p2pNetRegister(P_GLUE_INFO_T prGlueInfo, BOOLEAN fgIsRtnlLockAcquired)
/* register for net device */
if (register_netdev(prGlueInfo->prP2PInfo->prDevHandler) < 0) {
DBGLOG(P2P, WARN, "unable to register netdevice for p2p\n");
-
- free_netdev(prGlueInfo->prP2PInfo->prDevHandler);
+ /* free dev in glUnregisterP2P() */
+ /* free_netdev(prGlueInfo->prP2PInfo->prDevHandler); */
ret = FALSE;
} else {
@@ -1645,7 +1645,8 @@ BOOLEAN glUnregisterP2P(P_GLUE_INFO_T prGlueInfo)
#if CFG_SUPPORT_PERSIST_NETDEV
dev_close(prGlueInfo->prP2PInfo->prDevHandler);
#else
- free_netdev(prGlueInfo->prP2PInfo->prDevHandler);
+ if (prGlueInfo->prP2PInfo->prDevHandler != NULL)
+ free_netdev(prGlueInfo->prP2PInfo->prDevHandler);
prGlueInfo->prP2PInfo->prDevHandler = NULL;
#endif
/* Free p2p memory */
@@ -2897,6 +2898,10 @@ mtk_p2p_wext_set_key(IN struct net_device *prDev,
/* BSSID */
memcpy(prKey->arBSSID, prIWEncExt->addr.sa_data, 6);
+ if (prIWEncExt->key_len >= 32) {
+ ret = -EINVAL;
+ break;
+ }
memcpy(prKey->aucKeyMaterial, prIWEncExt->key, prIWEncExt->key_len);
prKey->u4KeyLength = prIWEncExt->key_len;