mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull locking changes from Ingo Molnar: "Four miscellanous standalone fixes for futexes, rtmutexes and Kconfig.locks." * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: futex: Use freezable blocking call futex: Take hugepages into account when generating futex_key rtmutex: Document rt_mutex_adjust_prio_chain() locking: Fix copy/paste errors of "ARCH_INLINE_*_UNLOCK_BH"
This commit is contained in:
commit
3e42dee676
5 changed files with 53 additions and 5 deletions
|
|
@ -138,7 +138,7 @@ config INLINE_SPIN_UNLOCK_BH
|
|||
|
||||
config INLINE_SPIN_UNLOCK_IRQ
|
||||
def_bool y
|
||||
depends on !PREEMPT || ARCH_INLINE_SPIN_UNLOCK_BH
|
||||
depends on !PREEMPT || ARCH_INLINE_SPIN_UNLOCK_IRQ
|
||||
|
||||
config INLINE_SPIN_UNLOCK_IRQRESTORE
|
||||
def_bool y
|
||||
|
|
@ -175,7 +175,7 @@ config INLINE_READ_UNLOCK_BH
|
|||
|
||||
config INLINE_READ_UNLOCK_IRQ
|
||||
def_bool y
|
||||
depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK_BH
|
||||
depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK_IRQ
|
||||
|
||||
config INLINE_READ_UNLOCK_IRQRESTORE
|
||||
def_bool y
|
||||
|
|
@ -212,7 +212,7 @@ config INLINE_WRITE_UNLOCK_BH
|
|||
|
||||
config INLINE_WRITE_UNLOCK_IRQ
|
||||
def_bool y
|
||||
depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK_BH
|
||||
depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK_IRQ
|
||||
|
||||
config INLINE_WRITE_UNLOCK_IRQRESTORE
|
||||
def_bool y
|
||||
|
|
|
|||
|
|
@ -61,6 +61,8 @@
|
|||
#include <linux/nsproxy.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/sched/rt.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/freezer.h>
|
||||
|
||||
#include <asm/futex.h>
|
||||
|
||||
|
|
@ -365,7 +367,7 @@ again:
|
|||
} else {
|
||||
key->both.offset |= FUT_OFF_INODE; /* inode-based key */
|
||||
key->shared.inode = page_head->mapping->host;
|
||||
key->shared.pgoff = page_head->index;
|
||||
key->shared.pgoff = basepage_index(page);
|
||||
}
|
||||
|
||||
get_futex_key_refs(key);
|
||||
|
|
@ -1807,7 +1809,7 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
|
|||
* is no timeout, or if it has yet to expire.
|
||||
*/
|
||||
if (!timeout || timeout->task)
|
||||
schedule();
|
||||
freezable_schedule();
|
||||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,6 +145,19 @@ int max_lock_depth = 1024;
|
|||
/*
|
||||
* Adjust the priority chain. Also used for deadlock detection.
|
||||
* Decreases task's usage by one - may thus free the task.
|
||||
*
|
||||
* @task: the task owning the mutex (owner) for which a chain walk is probably
|
||||
* needed
|
||||
* @deadlock_detect: do we have to carry out deadlock detection?
|
||||
* @orig_lock: the mutex (can be NULL if we are walking the chain to recheck
|
||||
* things for a task that has just got its priority adjusted, and
|
||||
* is waiting on a mutex)
|
||||
* @orig_waiter: rt_mutex_waiter struct for the task that has just donated
|
||||
* its priority to the mutex owner (can be NULL in the case
|
||||
* depicted above or if the top waiter is gone away and we are
|
||||
* actually deboosting the owner)
|
||||
* @top_task: the current top waiter
|
||||
*
|
||||
* Returns 0 or -EDEADLK.
|
||||
*/
|
||||
static int rt_mutex_adjust_prio_chain(struct task_struct *task,
|
||||
|
|
|
|||
Loading…
Reference in a new issue