From 2580f4e58487beaaa83147117ed95b299f647787 Mon Sep 17 00:00:00 2001 From: Andre Oppermann Date: Fri, 27 Aug 2004 21:23:50 +0000 Subject: [PATCH] Poll() uses the array smallbits that is big enough to hold 32 struct pollfd's to avoid calling malloc() on small numbers of fd's. Because smalltype's members have type char, its address might be misaligned for a struct pollfd. Change the array of char to an array of struct pollfd. PR: kern/58214 Submitted by: Stefan Farfeleder Reviewed by: bde (a long time ago) MFC after: 3 days --- sys/kern/sys_generic.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 13b5125847c..d329460564e 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -848,8 +848,8 @@ poll(td, uap) struct thread *td; struct poll_args *uap; { - caddr_t bits; - char smallbits[32 * sizeof(struct pollfd)]; + struct pollfd *bits; + struct pollfd smallbits[32]; struct timeval atv, rtv, ttv; int error = 0, timo; u_int ncoll, nfds; @@ -908,7 +908,7 @@ retry: mtx_unlock_spin(&sched_lock); mtx_unlock(&sellock); - error = pollscan(td, (struct pollfd *)bits, nfds); + error = pollscan(td, bits, nfds); mtx_lock(&sellock); if (error || td->td_retval[0]) goto done;