mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Apply patch included in bin/8872. This fixes a bug that occurs when
pthread_cond_timedwait() times out. PR: bin/8872 Submitted by: Jason Evans <jasone@canonware.com> Reviewed by: David Schwartz <davids@webmaster.com>
This commit is contained in:
parent
8fea704025
commit
a1aefaec27
3 changed files with 33 additions and 6 deletions
|
|
@ -29,7 +29,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
|
||||
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
|
||||
*
|
||||
*/
|
||||
#include <errno.h>
|
||||
|
|
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
|
|||
FD_ZERO(&pthread->data.select_data->writefds);
|
||||
FD_ZERO(&pthread->data.select_data->exceptfds);
|
||||
pthread->data.select_data->nfds = 0;
|
||||
}
|
||||
} else if (pthread->state == PS_COND_WAIT) {
|
||||
/*
|
||||
* The pthread_cond_timedwait()
|
||||
* has timed out, so remove the
|
||||
* thread from the condition's
|
||||
* queue.
|
||||
*/
|
||||
_thread_queue_remove(pthread->queue,
|
||||
pthread);
|
||||
}
|
||||
/*
|
||||
* Return an error as an interrupted
|
||||
* wait:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
|
||||
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
|
||||
*
|
||||
*/
|
||||
#include <errno.h>
|
||||
|
|
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
|
|||
FD_ZERO(&pthread->data.select_data->writefds);
|
||||
FD_ZERO(&pthread->data.select_data->exceptfds);
|
||||
pthread->data.select_data->nfds = 0;
|
||||
}
|
||||
} else if (pthread->state == PS_COND_WAIT) {
|
||||
/*
|
||||
* The pthread_cond_timedwait()
|
||||
* has timed out, so remove the
|
||||
* thread from the condition's
|
||||
* queue.
|
||||
*/
|
||||
_thread_queue_remove(pthread->queue,
|
||||
pthread);
|
||||
}
|
||||
/*
|
||||
* Return an error as an interrupted
|
||||
* wait:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: uthread_kern.c,v 1.14 1998/10/09 19:01:30 dt Exp $
|
||||
* $Id: uthread_kern.c,v 1.16 1999/03/23 05:07:56 jb Exp $
|
||||
*
|
||||
*/
|
||||
#include <errno.h>
|
||||
|
|
@ -212,7 +212,16 @@ __asm__("fnsave %0": :"m"(*fdata));
|
|||
FD_ZERO(&pthread->data.select_data->writefds);
|
||||
FD_ZERO(&pthread->data.select_data->exceptfds);
|
||||
pthread->data.select_data->nfds = 0;
|
||||
}
|
||||
} else if (pthread->state == PS_COND_WAIT) {
|
||||
/*
|
||||
* The pthread_cond_timedwait()
|
||||
* has timed out, so remove the
|
||||
* thread from the condition's
|
||||
* queue.
|
||||
*/
|
||||
_thread_queue_remove(pthread->queue,
|
||||
pthread);
|
||||
}
|
||||
/*
|
||||
* Return an error as an interrupted
|
||||
* wait:
|
||||
|
|
|
|||
Loading…
Reference in a new issue