svn commit: r322354 - head/sys/compat/linuxkpi/common/src

Hans Petter Selasky hselasky at FreeBSD.org
Thu Aug 10 12:51:06 UTC 2017


Author: hselasky
Date: Thu Aug 10 12:51:04 2017
New Revision: 322354
URL: https://svnweb.freebsd.org/changeset/base/322354

Log:
  Make sure the linux_wait_event_common() function in the LinuxKPI properly
  handles a timeout value of MAX_SCHEDULE_TIMEOUT which basically means there
  is no timeout. This is a regression issue after r319757.
  
  While at it change the type of returned variable from "long" to "int" to
  match the actual return type.
  
  MFC after:	1 week
  Sponsored by:	Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/src/linux_schedule.c

Modified: head/sys/compat/linuxkpi/common/src/linux_schedule.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_schedule.c	Thu Aug 10 12:31:55 2017	(r322353)
+++ head/sys/compat/linuxkpi/common/src/linux_schedule.c	Thu Aug 10 12:51:04 2017	(r322354)
@@ -213,12 +213,18 @@ linux_wait_event_common(wait_queue_head_t *wqh, wait_q
     unsigned int state, spinlock_t *lock)
 {
 	struct task_struct *task;
-	long ret;
+	int ret;
 
 	if (lock != NULL)
 		spin_unlock_irq(lock);
 
 	DROP_GIANT();
+
+	/* range check timeout */
+	if (timeout < 1)
+		timeout = 1;
+	else if (timeout == MAX_SCHEDULE_TIMEOUT)
+		timeout = 0;
 
 	task = current;
 


More information about the svn-src-head mailing list