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
This commit is contained in:
parent
d47e6e6bd1
commit
62162dfc94
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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))
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user