diff options
author | 2010-03-15 11:13:40 +0000 | |
---|---|---|
committer | 2010-03-15 11:13:40 +0000 | |
commit | dd117e2d0aa9f47fe608498f04104ba0e861d357 (patch) | |
tree | 9910c3b6208b8eb08560a860e0ad8f5e1f14bb96 | |
parent | Add id for Intel 82801JI RAID. Lets HP GL360 G6 see internal SATA (diff) | |
download | wireguard-openbsd-dd117e2d0aa9f47fe608498f04104ba0e861d357.tar.xz wireguard-openbsd-dd117e2d0aa9f47fe608498f04104ba0e861d357.zip |
Correct return from attach on error, add splx() and urndis_stop().
This fix a crash on detach.
-rw-r--r-- | sys/dev/usb/if_urndis.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/usb/if_urndis.c b/sys/dev/usb/if_urndis.c index 967940590a7..e8b32725af9 100644 --- a/sys/dev/usb/if_urndis.c +++ b/sys/dev/usb/if_urndis.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_urndis.c,v 1.17 2010/03/14 22:50:41 mk Exp $ */ +/* $OpenBSD: if_urndis.c,v 1.18 2010/03/15 11:13:40 fabien Exp $ */ /* * Copyright (c) 2010 Jonathan Armani <armani@openbsd.org> @@ -1479,6 +1479,8 @@ urndis_attach(struct device *parent, struct device *self, void *aux) if (urndis_ctrl_query(sc, OID_802_3_PERMANENT_ADDRESS, NULL, 0, &buf, &bufsz) != RNDIS_STATUS_SUCCESS) { printf("%s: unable to get hardware address\n", DEVNAME(sc)); + urndis_stop(sc); + splx(s); return; } @@ -1490,9 +1492,10 @@ urndis_attach(struct device *parent, struct device *self, void *aux) printf("%s: invalid address\n", DEVNAME(sc)); free(buf, M_TEMP); urndis_stop(sc); + splx(s); return; } - + /* Initialize packet filter */ sc->sc_filter = RNDIS_PACKET_TYPE_BROADCAST; sc->sc_filter |= RNDIS_PACKET_TYPE_ALL_MULTICAST; @@ -1501,6 +1504,7 @@ urndis_attach(struct device *parent, struct device *self, void *aux) sizeof(filter)) != RNDIS_STATUS_SUCCESS) { printf("%s: unable to set data filters\n", DEVNAME(sc)); urndis_stop(sc); + splx(s); return; } |