Merge branch 'perf/urgent' into perf/core, to pick up PMU driver fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -71,18 +71,17 @@ void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
|
||||
|
||||
void debug_mutex_unlock(struct mutex *lock)
|
||||
{
|
||||
if (unlikely(!debug_locks))
|
||||
return;
|
||||
if (likely(debug_locks)) {
|
||||
DEBUG_LOCKS_WARN_ON(lock->magic != lock);
|
||||
|
||||
DEBUG_LOCKS_WARN_ON(lock->magic != lock);
|
||||
if (!lock->owner)
|
||||
DEBUG_LOCKS_WARN_ON(!lock->owner);
|
||||
else
|
||||
DEBUG_LOCKS_WARN_ON(lock->owner != current);
|
||||
|
||||
if (!lock->owner)
|
||||
DEBUG_LOCKS_WARN_ON(!lock->owner);
|
||||
else
|
||||
DEBUG_LOCKS_WARN_ON(lock->owner != current);
|
||||
|
||||
DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
|
||||
mutex_clear_owner(lock);
|
||||
DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
|
||||
mutex_clear_owner(lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* __mutex_slowpath_needs_to_unlock() is explicitly 0 for debug
|
||||
|
||||
+8
-9
@@ -69,18 +69,17 @@ static void populate_seccomp_data(struct seccomp_data *sd)
|
||||
{
|
||||
struct task_struct *task = current;
|
||||
struct pt_regs *regs = task_pt_regs(task);
|
||||
unsigned long args[6];
|
||||
|
||||
sd->nr = syscall_get_nr(task, regs);
|
||||
sd->arch = syscall_get_arch();
|
||||
|
||||
/* Unroll syscall_get_args to help gcc on arm. */
|
||||
syscall_get_arguments(task, regs, 0, 1, (unsigned long *) &sd->args[0]);
|
||||
syscall_get_arguments(task, regs, 1, 1, (unsigned long *) &sd->args[1]);
|
||||
syscall_get_arguments(task, regs, 2, 1, (unsigned long *) &sd->args[2]);
|
||||
syscall_get_arguments(task, regs, 3, 1, (unsigned long *) &sd->args[3]);
|
||||
syscall_get_arguments(task, regs, 4, 1, (unsigned long *) &sd->args[4]);
|
||||
syscall_get_arguments(task, regs, 5, 1, (unsigned long *) &sd->args[5]);
|
||||
|
||||
syscall_get_arguments(task, regs, 0, 6, args);
|
||||
sd->args[0] = args[0];
|
||||
sd->args[1] = args[1];
|
||||
sd->args[2] = args[2];
|
||||
sd->args[3] = args[3];
|
||||
sd->args[4] = args[4];
|
||||
sd->args[5] = args[5];
|
||||
sd->instruction_pointer = KSTK_EIP(task);
|
||||
}
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ static u32 map_id_range_down(struct uid_gid_map *map, u32 id, u32 count)
|
||||
|
||||
/* Find the matching extent */
|
||||
extents = map->nr_extents;
|
||||
smp_read_barrier_depends();
|
||||
smp_rmb();
|
||||
for (idx = 0; idx < extents; idx++) {
|
||||
first = map->extent[idx].first;
|
||||
last = first + map->extent[idx].count - 1;
|
||||
@@ -176,7 +176,7 @@ static u32 map_id_down(struct uid_gid_map *map, u32 id)
|
||||
|
||||
/* Find the matching extent */
|
||||
extents = map->nr_extents;
|
||||
smp_read_barrier_depends();
|
||||
smp_rmb();
|
||||
for (idx = 0; idx < extents; idx++) {
|
||||
first = map->extent[idx].first;
|
||||
last = first + map->extent[idx].count - 1;
|
||||
@@ -199,7 +199,7 @@ static u32 map_id_up(struct uid_gid_map *map, u32 id)
|
||||
|
||||
/* Find the matching extent */
|
||||
extents = map->nr_extents;
|
||||
smp_read_barrier_depends();
|
||||
smp_rmb();
|
||||
for (idx = 0; idx < extents; idx++) {
|
||||
first = map->extent[idx].lower_first;
|
||||
last = first + map->extent[idx].count - 1;
|
||||
@@ -615,9 +615,8 @@ static ssize_t map_write(struct file *file, const char __user *buf,
|
||||
* were written before the count of the extents.
|
||||
*
|
||||
* To achieve this smp_wmb() is used on guarantee the write
|
||||
* order and smp_read_barrier_depends() is guaranteed that we
|
||||
* don't have crazy architectures returning stale data.
|
||||
*
|
||||
* order and smp_rmb() is guaranteed that we don't have crazy
|
||||
* architectures returning stale data.
|
||||
*/
|
||||
mutex_lock(&id_map_mutex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user