From e67f54ab1a6253dd69cb2c770d785c7eb6d2172c Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 22 Sep 2016 01:45:48 +0200 Subject: hurdmalloc: Run fork handler as late as possible [BZ #19431] This is the hurd-specific follow-up for 29d794863cd6e03115d3670707cc873a9965ba92 : hurdmalloc also needs the same fix * hurd/hurdmalloc.c (malloc_fork_prepare): Rename to _hurd_malloc_fork_prepare. (malloc_fork_parent): Rename to _hurd_malloc_fork_parent. (malloc_fork_child): Rename to _hurd_malloc_fork_child. (_hurd_fork_prepare_hook): Drop malloc_fork_prepare. (_hurd_fork_parent_hook): Drop malloc_fork_parent. (_hurd_fork_child_hook): Drop malloc_fork_child. * hurd/hurdmalloc.h (_hurd_malloc_fork_prepare, _hurd_malloc_fork_parent, _hurd_malloc_fork_child): Add declarations. * sysdeps/mach/hurd/fork.c (__fork): Call __malloc_fork_lock_parent after locking locks (notably hurd_dtable_lock). Call _hurd_malloc_fork_prepare after that. Call _hurd_malloc_fork_parent before __malloc_fork_unlock_parent and _hurd_malloc_fork_child before __malloc_fork_unlock_child. --- hurd/hurdmalloc.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'hurd/hurdmalloc.h') diff --git a/hurd/hurdmalloc.h b/hurd/hurdmalloc.h index e11c208a8f..3520ffacd8 100644 --- a/hurd/hurdmalloc.h +++ b/hurd/hurdmalloc.h @@ -12,6 +12,10 @@ extern void *_hurd_malloc (size_t); extern void *_hurd_realloc (void *, size_t); extern void _hurd_free (void *); +extern void _hurd_malloc_fork_prepare (void); +extern void _hurd_malloc_fork_parent (void); +extern void _hurd_malloc_fork_child (void); + #define malloc _hurd_malloc #define realloc _hurd_realloc #define free _hurd_free -- cgit v1.2.3