Module Name: src Committed By: maxv Date: Tue Jan 16 14:01:13 UTC 2018
Modified Files: src/sys/net80211: ieee80211_input.c Log Message: Fix memory leak. If m1 == m, m = NULL, so it's safe to just call m_freem. To generate a diff of this commit: cvs rdiff -u -r1.94 -r1.95 src/sys/net80211/ieee80211_input.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net80211/ieee80211_input.c diff -u src/sys/net80211/ieee80211_input.c:1.94 src/sys/net80211/ieee80211_input.c:1.95 --- src/sys/net80211/ieee80211_input.c:1.94 Tue Jan 16 09:42:11 2018 +++ src/sys/net80211/ieee80211_input.c Tue Jan 16 14:01:13 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ieee80211_input.c,v 1.94 2018/01/16 09:42:11 maxv Exp $ */ +/* $NetBSD: ieee80211_input.c,v 1.95 2018/01/16 14:01:13 maxv Exp $ */ /* * Copyright (c) 2001 Atsushi Onoe @@ -37,7 +37,7 @@ __FBSDID("$FreeBSD: src/sys/net80211/ieee80211_input.c,v 1.81 2005/08/10 16:22:29 sam Exp $"); #endif #ifdef __NetBSD__ -__KERNEL_RCSID(0, "$NetBSD: ieee80211_input.c,v 1.94 2018/01/16 09:42:11 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ieee80211_input.c,v 1.95 2018/01/16 14:01:13 maxv Exp $"); #endif #ifdef _KERNEL_OPT @@ -891,6 +891,7 @@ ieee80211_deliver_data(struct ieee80211c ieee80211_free_node(sta); } } + if (m1 != NULL) { int len; #ifdef ALTQ @@ -902,13 +903,14 @@ ieee80211_deliver_data(struct ieee80211c IFQ_ENQUEUE(&ifp->if_snd, m1, error); if (error) { ifp->if_oerrors++; + m_freem(m); m = NULL; } ifp->if_obytes += len; } } - if (m != NULL) { + if (m != NULL) { if (ni->ni_vlan != 0) vlan_set_tag(m, ni->ni_vlan); @@ -919,6 +921,7 @@ ieee80211_deliver_data(struct ieee80211c KASSERT(ifp->if_percpuq); if_percpuq_enqueue(ifp->if_percpuq, m); } + return; }