X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=kernel%2Fmutex.c;h=632f04c57d82b0207608f10a57f95582833489c1;hb=5ded3dc6a3c7549b36a8ac27bbd81b33756a2c29;hp=e2d25e9e62ae11700e002877a9aaed8df89b9afb;hpb=a511e3f968c462a55ef58697257f5347c73d306e;p=safe%2Fjmp%2Flinux-2.6 diff --git a/kernel/mutex.c b/kernel/mutex.c index e2d25e9..632f04c 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c @@ -89,7 +89,7 @@ __mutex_lock_slowpath(atomic_t *lock_count); * * This function is similar to (but not equivalent to) down(). */ -void inline __sched mutex_lock(struct mutex *lock) +void __sched mutex_lock(struct mutex *lock) { might_sleep(); /* @@ -148,8 +148,8 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, preempt_disable(); mutex_acquire(&lock->dep_map, subclass, 0, ip); -#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) && \ - !defined(CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES) + +#ifdef CONFIG_MUTEX_SPIN_ON_OWNER /* * Optimistic spinning. * @@ -249,7 +249,9 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, /* didnt get the lock, go to sleep: */ spin_unlock_mutex(&lock->wait_lock, flags); - __schedule(); + preempt_enable_no_resched(); + schedule(); + preempt_disable(); spin_lock_mutex(&lock->wait_lock, flags); }