From 09f93bd3d6b1c41370432e6b7a3c88d0fc482881 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 15 Nov 2011 10:32:18 +0100 Subject: Fix reference counting in network interface information cache --- ChangeLog | 5 +++++ sysdeps/unix/sysv/linux/check_pf.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 139ba57532..8bb25138ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-11-15 Andreas Schwab + + * sysdeps/unix/sysv/linux/check_pf.c (make_request): Properly + count references to noai6ai_cached. + 2011-11-15 Ulrich Drepper * time/getdate.c (__getdate_r): Set FD_CLOEXEC for given file. diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index 1f66684e4f..895dc2a285 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -58,7 +58,7 @@ struct cached_data static struct cached_data noai6ai_cached = { - .usecnt = 3, /* Make sure we never try to delete this entry. */ + .usecnt = 1, /* Make sure we never try to delete this entry. */ .in6ailen = 0 }; @@ -273,6 +273,7 @@ make_request (int fd, pid_t pid) } else { + atomic_add(&noai6ai_cached.usecnt, 2); noai6ai_cached.seen_ipv4 = seen_ipv4; noai6ai_cached.seen_ipv6 = seen_ipv6; result = &noai6ai_cached; -- cgit 1.4.1