summaryrefslogtreecommitdiff
path: root/core/utils
diff options
context:
space:
mode:
Diffstat (limited to 'core/utils')
-rw-r--r--core/utils/nlink/src/wlan_nlink_srv.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/core/utils/nlink/src/wlan_nlink_srv.c b/core/utils/nlink/src/wlan_nlink_srv.c
index 87390264ca39..6416eb042d76 100644
--- a/core/utils/nlink/src/wlan_nlink_srv.c
+++ b/core/utils/nlink/src/wlan_nlink_srv.c
@@ -43,6 +43,8 @@
#include <wlan_nlink_srv.h>
#include <qdf_trace.h>
+#define WLAN_CLD80211_MAX_SIZE (SKB_WITH_OVERHEAD(8192UL) - NLMSG_HDRLEN)
+
#if defined(CONFIG_CNSS_LOGGER)
#include <net/cnss_logger.h>
@@ -453,7 +455,17 @@ static int send_msg_to_cld80211(int mcgroup_id, int pid, int app_id,
if (in_interrupt() || irqs_disabled() || in_atomic())
flags = GFP_ATOMIC;
- msg = nlmsg_new(NLMSG_DEFAULT_SIZE, flags);
+ if (len > NLMSG_DEFAULT_SIZE) {
+ if (len > WLAN_CLD80211_MAX_SIZE) {
+ QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
+ "buf size:%d if more than max size: %d",
+ len, WLAN_CLD80211_MAX_SIZE);
+ return -ENOMEM;
+ }
+ msg = nlmsg_new(WLAN_CLD80211_MAX_SIZE, flags);
+ } else {
+ msg = nlmsg_new(NLMSG_DEFAULT_SIZE, flags);
+ }
if (!msg) {
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
"nlmsg malloc fails");