Merge branch 'linux-2.6'
Este commit está contenido en:
@@ -353,6 +353,12 @@ struct task_struct *__switch_to(struct task_struct *prev,
|
||||
account_process_vtime(current);
|
||||
calculate_steal_time();
|
||||
|
||||
/*
|
||||
* We can't take a PMU exception inside _switch() since there is a
|
||||
* window where the kernel stack SLB and the kernel stack are out
|
||||
* of sync. Hard disable here.
|
||||
*/
|
||||
hard_irq_disable();
|
||||
last = _switch(old_thread, new_thread);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
@@ -530,15 +530,21 @@ static int gpr32_set(struct task_struct *target,
|
||||
--count;
|
||||
}
|
||||
|
||||
if (kbuf)
|
||||
if (kbuf) {
|
||||
for (; count > 0 && pos <= PT_MAX_PUT_REG; --count)
|
||||
regs[pos++] = *k++;
|
||||
else
|
||||
for (; count > 0 && pos < PT_TRAP; --count, ++pos)
|
||||
++k;
|
||||
} else {
|
||||
for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) {
|
||||
if (__get_user(reg, u++))
|
||||
return -EFAULT;
|
||||
regs[pos++] = reg;
|
||||
}
|
||||
for (; count > 0 && pos < PT_TRAP; --count, ++pos)
|
||||
if (__get_user(reg, u++))
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
if (count > 0 && pos == PT_TRAP) {
|
||||
if (kbuf)
|
||||
|
Referencia en una nueva incidencia
Block a user