locking spinlocks during copy_to_user, copy_from_user

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi:
   It is well know that is not recomended to keep a spinlock locked during operations that can be preempted. Some of these operations are copy_to_user, copy_from_user.
Below is the code of the write_lock() as a sample.
 
340 static inline void __write_lock(rwlock_t *lock)
 341{
 342        preempt_disable(); <<<<<< THE ISSUE IS HERE <<<<<<<<<<<<<<
 343        rwlock_acquire(&lock->dep_map, 0, 0, _RET_IP_);
 344        LOCK_CONTENDED(lock, _raw_write_trylock, _raw_write_lock);
 345}

On write_unlock() the preemtion is enable.
 
My question is: Is there any know consequence if I enable preemption before copy_to_user/copy_from user (keeping the spinlock locked) and then disable preemption again after the copy?????
i.e.:
write_lock(&lock);
.......
 preempt_enable();
 copy_to_user(.......);
  preempt_disable();
 .......
write_unlock(&lock);

Thanks in advance.
PAP
 
 
 
 
 

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux