diff options
author | simokawa <simokawa@FreeBSD.org> | 2005-11-25 14:29:24 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2005-11-25 14:29:24 +0000 |
commit | 2f1243974b570861bdd383d3e2dbcee8716f39e1 (patch) | |
tree | 8dbfe8df4064e537fbd87253427c8e6a0d6a9a8b /sys/dev/firewire | |
parent | 268d463a3d0037950b457f8f9d2759ca1c4d016a (diff) | |
download | FreeBSD-src-2f1243974b570861bdd383d3e2dbcee8716f39e1.zip FreeBSD-src-2f1243974b570861bdd383d3e2dbcee8716f39e1.tar.gz |
Fix panic when we cannot find self-id of probing nodes.
This shouldn't happen as far as the self-id buffer is vaild but
some people have this problem.
PR: kern/83999
Submitted by: Markus Wild <fbsd-lists@dudes.ch>
MFC after: 3 days
Diffstat (limited to 'sys/dev/firewire')
-rw-r--r-- | sys/dev/firewire/firewire.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c index 9636b12..8dba5c2 100644 --- a/sys/dev/firewire/firewire.c +++ b/sys/dev/firewire/firewire.c @@ -1324,6 +1324,7 @@ fw_bus_explore(struct firewire_comm *fc ) uint32_t addr; struct fw_xfer *xfer; struct fw_pkt *fp; + union fw_self_id *fwsid; if(fc->status != FWBUSEXPLORE) return; @@ -1336,7 +1337,8 @@ loop: /* check link */ /* XXX we need to check phy_id first */ - if (!fw_find_self_id(fc, fc->ongonode)->p0.link_active) { + fwsid = fw_find_self_id(fc, fc->ongonode); + if (!fwsid || !fwsid->p0.link_active) { if (firewire_debug) printf("node%d: link down\n", fc->ongonode); fc->ongonode++; |