Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Nov 2008 15:45:41 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r185002 - in head/sys: amd64/linux32 compat/linux i386/linux
Message-ID:  <200811161545.mAGFjfkH057849@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sun Nov 16 15:45:41 2008
New Revision: 185002
URL: http://svn.freebsd.org/changeset/base/185002

Log:
  In the robust futexes list head, futex_offset shall be signed,
  and glibc actually supplies negative offsets. Change l_ulong to l_long.
  
  Submitted by:	dchagin

Modified:
  head/sys/amd64/linux32/linux.h
  head/sys/compat/linux/linux_futex.c
  head/sys/i386/linux/linux.h

Modified: head/sys/amd64/linux32/linux.h
==============================================================================
--- head/sys/amd64/linux32/linux.h	Sun Nov 16 14:55:58 2008	(r185001)
+++ head/sys/amd64/linux32/linux.h	Sun Nov 16 15:45:41 2008	(r185002)
@@ -892,7 +892,7 @@ struct linux_robust_list {
 
 struct linux_robust_list_head {
 	struct linux_robust_list	list;
-	l_ulong				futex_offset;
+	l_long				futex_offset;
 	l_uintptr_t			pending_list;
 };
 

Modified: head/sys/compat/linux/linux_futex.c
==============================================================================
--- head/sys/compat/linux/linux_futex.c	Sun Nov 16 14:55:58 2008	(r185001)
+++ head/sys/compat/linux/linux_futex.c	Sun Nov 16 15:45:41 2008	(r185002)
@@ -652,7 +652,7 @@ release_futexes(struct proc *p)
 	struct linux_robust_list *entry, *next_entry, *pending;
 	unsigned int limit = 2048, pi, next_pi, pip;
 	struct linux_emuldata *em;
-	l_ulong futex_offset;
+	l_long futex_offset;
 	int rc;
 
 	em = em_find(p, EMUL_DONTLOCK);
@@ -664,7 +664,7 @@ release_futexes(struct proc *p)
 	if (fetch_robust_entry(&entry, PTRIN(&head->list.next), &pi))
 		return;
 
-	if (copyin(&head->futex_offset, &futex_offset, sizeof(l_ulong)))
+	if (copyin(&head->futex_offset, &futex_offset, sizeof(futex_offset)))
 		return;
 
 	if (fetch_robust_entry(&pending, PTRIN(&head->pending_list), &pip))

Modified: head/sys/i386/linux/linux.h
==============================================================================
--- head/sys/i386/linux/linux.h	Sun Nov 16 14:55:58 2008	(r185001)
+++ head/sys/i386/linux/linux.h	Sun Nov 16 15:45:41 2008	(r185002)
@@ -862,7 +862,7 @@ struct linux_robust_list {
 
 struct linux_robust_list_head {
 	struct linux_robust_list	list;
-	l_ulong				futex_offset;
+	l_long				futex_offset;
 	struct linux_robust_list	*pending_list;
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811161545.mAGFjfkH057849>