diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2005-08-11 08:14:53 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2005-08-11 08:14:53 +0000 |
commit | 530f95fc08e471a60f475ced5fc1cc7554c06293 (patch) | |
tree | decf2e9a9a44b246a6d6dd15b016ed79b3b91a61 /sys/net/if_fwsubr.c | |
parent | ae12c6579e3add960598e10a58e6f81196dd5f23 (diff) | |
download | src-530f95fc08e471a60f475ced5fc1cc7554c06293.tar.gz src-530f95fc08e471a60f475ced5fc1cc7554c06293.zip |
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)
Notes
Notes:
svn path=/head/; revision=148954
Diffstat (limited to 'sys/net/if_fwsubr.c')
-rw-r--r-- | sys/net/if_fwsubr.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/net/if_fwsubr.c b/sys/net/if_fwsubr.c index 0aaa949b0cd5..b08ed6a68fe8 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 |