Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Feb 2012 08:01:29 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r232147 - head/sys/dev/wi
Message-ID:  <201202250801.q1P81Tdx006994@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sat Feb 25 08:01:29 2012
New Revision: 232147
URL: http://svn.freebsd.org/changeset/base/232147

Log:
  If an interrupt is received with no vap attached, just fail LINK events.
  
  This fixes a NULL pointer dereference which occurs if the vap list is
  empty but someone brings up the wi0 interface.

Modified:
  head/sys/dev/wi/if_wi.c

Modified: head/sys/dev/wi/if_wi.c
==============================================================================
--- head/sys/dev/wi/if_wi.c	Sat Feb 25 07:58:59 2012	(r232146)
+++ head/sys/dev/wi/if_wi.c	Sat Feb 25 08:01:29 2012	(r232147)
@@ -1511,6 +1511,10 @@ wi_info_intr(struct wi_softc *sc)
 	case WI_INFO_LINK_STAT:
 		wi_read_bap(sc, fid, sizeof(ltbuf), &stat, sizeof(stat));
 		DPRINTF(("wi_info_intr: LINK_STAT 0x%x\n", le16toh(stat)));
+
+		if (vap == NULL)
+			goto finish;
+
 		switch (le16toh(stat)) {
 		case WI_INFO_LINK_STAT_CONNECTED:
 			if (vap->iv_state == IEEE80211_S_RUN &&
@@ -1566,6 +1570,7 @@ wi_info_intr(struct wi_softc *sc)
 		    le16toh(ltbuf[1]), le16toh(ltbuf[0])));
 		break;
 	}
+finish:
 	CSR_WRITE_2(sc, WI_EVENT_ACK, WI_EV_INFO);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202250801.q1P81Tdx006994>