Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 May 2016 23:08:57 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r300791 - head/sys/boot/efi/libefi
Message-ID:  <201605262308.u4QN8vc3065727@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Thu May 26 23:08:57 2016
New Revision: 300791
URL: https://svnweb.freebsd.org/changeset/base/300791

Log:
  Use a unique error message if we fail to find the simple network protocol.
  
  While here, fix the various net driver callbacks to return early instead
  of crashing if this fails.  (The 'init' callback from the netif interface
  doesn't return an error if the protocol lookup fails.)
  
  Sponsored by:	Cisco Systems

Modified:
  head/sys/boot/efi/libefi/efinet.c

Modified: head/sys/boot/efi/libefi/efinet.c
==============================================================================
--- head/sys/boot/efi/libefi/efinet.c	Thu May 26 23:07:20 2016	(r300790)
+++ head/sys/boot/efi/libefi/efinet.c	Thu May 26 23:08:57 2016	(r300791)
@@ -122,6 +122,8 @@ efinet_put(struct iodesc *desc, void *pk
 	void *buf;
 
 	net = nif->nif_devdata;
+	if (net == NULL)
+		return (-1);
 
 	status = net->Transmit(net, 0, len, pkt, 0, 0, 0);
 	if (status != EFI_SUCCESS)
@@ -152,6 +154,8 @@ efinet_get(struct iodesc *desc, void *pk
 	char buf[2048];
 
 	net = nif->nif_devdata;
+	if (net == NULL)
+		return (0);
 
 	t = time(0);
 	while ((time(0) - t) < timeout) {
@@ -192,7 +196,7 @@ efinet_init(struct iodesc *desc, void *m
 	h = nif->nif_driver->netif_ifs[nif->nif_unit].dif_private;
 	status = BS->HandleProtocol(h, &sn_guid, (VOID **)&nif->nif_devdata);
 	if (status != EFI_SUCCESS) {
-		printf("net%d: cannot start interface (status=%lu)\n",
+		printf("net%d: cannot fetch interface data (status=%lu)\n",
 		    nif->nif_unit, EFI_ERROR_CODE(status));
 		return;
 	}
@@ -241,6 +245,9 @@ efinet_end(struct netif *nif)
 {
 	EFI_SIMPLE_NETWORK *net = nif->nif_devdata; 
 
+	if (net == NULL)
+		return;
+
 	net->Shutdown(net);
 }
 



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