View | Details | Raw Unified | Return to bug 123062
Collapse All | Expand All

(-)rtld.c (-2 / +2 lines)
Lines 2100-2106 Link Here
2100
    const Obj_Entry *obj;
2100
    const Obj_Entry *obj;
2101
    int error, lockstate;
2101
    int error, lockstate;
2102
2102
2103
    lockstate = rlock_acquire(rtld_bind_lock);
2103
    lockstate = wlock_acquire(rtld_phdr_lock);
2104
2104
2105
    error = 0;
2105
    error = 0;
2106
2106
Lines 2119-2125 Link Here
2119
		break;
2119
		break;
2120
2120
2121
    }
2121
    }
2122
    rlock_release(rtld_bind_lock, lockstate);
2122
    wlock_release(rtld_phdr_lock, lockstate);
2123
2123
2124
    return (error);
2124
    return (error);
2125
}
2125
}
(-)rtld_lock.c (-1 / +2 lines)
Lines 171-177 Link Here
171
	lockinfo.thread_clr_flag(mask);
171
	lockinfo.thread_clr_flag(mask);
172
}
172
}
173
173
174
#define	RTLD_LOCK_CNT	2
174
#define	RTLD_LOCK_CNT	3
175
struct rtld_lock {
175
struct rtld_lock {
176
	void	*handle;
176
	void	*handle;
177
	int	 mask;
177
	int	 mask;
Lines 179-184 Link Here
179
179
180
rtld_lock_t	rtld_bind_lock = &rtld_locks[0];
180
rtld_lock_t	rtld_bind_lock = &rtld_locks[0];
181
rtld_lock_t	rtld_libc_lock = &rtld_locks[1];
181
rtld_lock_t	rtld_libc_lock = &rtld_locks[1];
182
rtld_lock_t	rtld_phdr_lock = &rtld_locks[2];
182
183
183
int
184
int
184
rlock_acquire(rtld_lock_t lock)
185
rlock_acquire(rtld_lock_t lock)
(-)rtld_lock.h (+1 lines)
Lines 52-57 Link Here
52
52
53
extern rtld_lock_t	rtld_bind_lock;
53
extern rtld_lock_t	rtld_bind_lock;
54
extern rtld_lock_t	rtld_libc_lock;
54
extern rtld_lock_t	rtld_libc_lock;
55
extern rtld_lock_t	rtld_phdr_lock;
55
56
56
int	rlock_acquire(rtld_lock_t);
57
int	rlock_acquire(rtld_lock_t);
57
int 	wlock_acquire(rtld_lock_t);
58
int 	wlock_acquire(rtld_lock_t);

Return to bug 123062