It seems like we unlock rng_mutex twice (2.6.33-rc1).drivers/char/hw_random/core.c 151 mutex_unlock(&rng_mutex); 152 153 if (need_resched()) 154 schedule_timeout_interruptible(1); 155 156 if (signal_pending(current)) { 157 err = -ERESTARTSYS; 158 goto out; 159 } 160 } 161 out_unlock: 162 mutex_unlock(&rng_mutex); regards,dan carpenter