summaryrefslogtreecommitdiffstats
path: root/sys/net/if_fwsubr.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-08-11 08:14:53 +0000
committerglebius <glebius@FreeBSD.org>2005-08-11 08:14:53 +0000
commitfa253399af72f4968a7eddd5210066700b92d2c0 (patch)
treedecf2e9a9a44b246a6d6dd15b016ed79b3b91a61 /sys/net/if_fwsubr.c
parente0688f129366b4f89acf47c45af55135dc0609ae (diff)
downloadFreeBSD-src-fa253399af72f4968a7eddd5210066700b92d2c0.zip
FreeBSD-src-fa253399af72f4968a7eddd5210066700b92d2c0.tar.gz
o Make rt_check() function more strict:
- rt0 passed to rt_check() must not be NULL, assert this. - rt returned by rt_check() must be valid locked rtentry, if no error occured. o Modify callers, so that they never pass NULL rt0 to rt_check(). Reviewed by: sam, ume (nd6.c)
Diffstat (limited to 'sys/net/if_fwsubr.c')
-rw-r--r--sys/net/if_fwsubr.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/net/if_fwsubr.c b/sys/net/if_fwsubr.c
index 0aaa949..b08ed6a 100644
--- a/sys/net/if_fwsubr.c
+++ b/sys/net/if_fwsubr.c
@@ -81,7 +81,7 @@ firewire_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
{
struct fw_com *fc = IFP2FC(ifp);
int error, type;
- struct rtentry *rt;
+ struct rtentry *rt = NULL;
struct m_tag *mtag;
union fw_encap *enc;
struct fw_hwaddr *destfw;
@@ -103,10 +103,12 @@ firewire_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
goto bad;
}
- error = rt_check(&rt, &rt0, dst);
- if (error)
- goto bad;
- RT_UNLOCK(rt);
+ if (rt0 != NULL) {
+ error = rt_check(&rt, &rt0, dst);
+ if (error)
+ goto bad;
+ RT_UNLOCK(rt);
+ }
/*
* For unicast, we make a tag to store the lladdr of the
OpenPOWER on IntegriCloud