On Sat, Aug 06, 2005 Kenneth Aafl?y wrote: > l?rdag 06 august 2005, 21:08, skrev Johannes Stezenbach: > > Kenneth Aafl?y wrote: > > > Is changing all down_interruptible (that protects freeing a structure) > > > to down(), or will this have other unseen side-effects? > > > > Generally speaking, a driver should only sleep uninterruptibly > > if you can make absolutely sure it won't sleep forever, even > > in an obscure error case. If you can guarantee that from > > reading the code, then it's best to change the down() to > > down_interruptible(), otherwise it's better to handle the > > error from down_interruptible() correctly. > > > > (If a process is stuck in uninterruptible sleep you usually > > have to reboot to get rid of it, which is bad.) > > Ok, but do you think it is better interrupt freeing a resource > that can't be reclaimed later, or _maybe_ break some other part > because of deadlocks? Choose your poison... Maybe you could explain the "can't be reclaimed later" part? Why is it not possible to handle down_interruptible() interruption currectly? And, BTW, what exactly is the problem that you found? I guess if you experimentally change it to down() you will soon find out if it causes problems. I would just prefer if you read the code and think about what could cause it to hang indefinitely (e.g. buggy driver or hardware problems). Johannes