diff options
author | bz <bz@FreeBSD.org> | 2009-01-31 10:48:02 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2009-01-31 10:48:02 +0000 |
commit | 226b2a700eecfdf598bf77f229d3a378d11844b4 (patch) | |
tree | db9d96c3d46e2dd5b8ccaa93c6188a5c52063c79 /sys/net/if_llatbl.c | |
parent | e2a805f19f85cd20079a30f6532e261f7c2ebe1d (diff) | |
download | FreeBSD-src-226b2a700eecfdf598bf77f229d3a378d11844b4.zip FreeBSD-src-226b2a700eecfdf598bf77f229d3a378d11844b4.tar.gz |
Like with r185713 make sure to not leak a lock as rtalloc1(9) returns
a locked route. Thus we have to use RTFREE_LOCKED(9) to get it unlocked
and rtfree(9)d rather than just rtfree(9)d.
Since the PR was filed, new places with the same problem were added
with new code. Also check that the rt is valid before freeing it
either way there.
PR: kern/129793
Submitted by: Dheeraj Reddy <dheeraj@ece.gatech.edu>
MFC after: 2 weeks
Committed from: Bugathon #6
Diffstat (limited to 'sys/net/if_llatbl.c')
-rw-r--r-- | sys/net/if_llatbl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c index a3d1b05..2287f92 100644 --- a/sys/net/if_llatbl.c +++ b/sys/net/if_llatbl.c @@ -219,10 +219,11 @@ lla_rt_output(struct rt_msghdr *rtm, struct rt_addrinfo *info) log(LOG_INFO, "%s: RTM_ADD publish " "(proxy only) is invalid\n", __func__); - RTFREE(rt); + if (rt) + RTFREE_LOCKED(rt); return EINVAL; } - RTFREE(rt); + RTFREE_LOCKED(rt); flags |= LLE_PROXY; } |