Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 166449
b: refs/heads/master
c: 0729e19
h: refs/heads/master
i:
  166447: b12e336
v: v3
  • Loading branch information
Darren Hart authored and Ingo Molnar committed Sep 22, 2009
1 parent 1cadc22 commit a1a5f0d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d8d88fbb186fe3ea37b2a58adb32413c98b59656
refs/heads/master: 0729e196147692d84d4c099fcff056eba2ed61d8
15 changes: 3 additions & 12 deletions trunk/kernel/futex.c
Original file line number Diff line number Diff line change
Expand Up @@ -1656,17 +1656,8 @@ static int fixup_owner(u32 __user *uaddr, int fshared, struct futex_q *q,
static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
struct hrtimer_sleeper *timeout)
{
queue_me(q, hb);

/*
* There might have been scheduling since the queue_me(), as we
* cannot hold a spinlock across the get_user() in case it
* faults, and we cannot just set TASK_INTERRUPTIBLE state when
* queueing ourselves into the futex hash. This code thus has to
* rely on the futex_wake() code removing us from hash when it
* wakes us up.
*/
set_current_state(TASK_INTERRUPTIBLE);
queue_me(q, hb);

/* Arm the timer */
if (timeout) {
Expand All @@ -1676,8 +1667,8 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
}

/*
* !plist_node_empty() is safe here without any lock.
* q.lock_ptr != 0 is not safe, because of ordering against wakeup.
* If we have been removed from the hash list, then another task
* has tried to wake us, and we can skip the call to schedule().
*/
if (likely(!plist_node_empty(&q->list))) {
/*
Expand Down

0 comments on commit a1a5f0d

Please sign in to comment.