Re: 2.6.14 kernels and above copy_to_user stupidity with IRQ disabledcheck

From: Phillip Susi
Date: Fri Jan 27 2006 - 14:29:36 EST


Probably because you aren't allowed to call copy_to_user while holding a spin lock? The user pages might be non resident and you can't have a page fault with interrupts disabled. Also you don't want to spend a lot of time with interrupts disabled, and copy_to_user can take a fair amount of time for large copies.

Jeff V. Merkey wrote:

Is there a good reason someone set a disabled_irq() check on 2.6.14 and above for copy_to_user to barf out
tons of bogus stack dump messages if the function is called from within a spinlock:

i.e.

spin_lock_irqsave(&regen_lock, regen_flags);
v = regen_head;
while (v)
{
if (i >= count)
return -EFAULT;


err = copy_to_user(&s[i++], v, sizeof(VIRTUAL_SETUP));
if (err)
return err;


v = v->next;
}
spin_unlock_irqrestore(&regen_lock, regen_flags);

is now busted and worked in kernels up to this point. The error message is annoying but non-fatal.

Jeff


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/