move check of s->busy after aquisition of big_comedi_lock in
authorFrank Mori Hess <fmhess@speakeasy.net>
Sun, 13 Mar 2005 15:17:52 +0000 (15:17 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Sun, 13 Mar 2005 15:17:52 +0000 (15:17 +0000)
do_lock_ioctl.  Make locking return a less confusing error code
on failure.  Make locking fail if process already has lock (alternative
would be to make locking recursive, but I don't see a reason to bother).

comedi/comedi_fops.c
comedi/kcomedilib/kcomedilib_main.c

index a2e189df7f25a0e3b92d949555337323b0a62f9f..df3a778ecdc796bd75c4ea3cf44b68c8da4d7a9e 100644 (file)
@@ -1084,17 +1084,17 @@ static int do_lock_ioctl(comedi_device *dev,unsigned int arg,void * file)
                return -EINVAL;
        s=dev->subdevices+arg;
 
+       comedi_spin_lock_irqsave(&big_comedi_lock, flags);
        if(s->busy)
+       {
+               comedi_spin_unlock_irqrestore(&big_comedi_lock, flags);
                return -EBUSY;
-
-       comedi_spin_lock_irqsave(&big_comedi_lock, flags);
-
-       if(s->lock && s->lock!=file){
-               ret=-EACCES;
+       }
+       if(s->lock){
+               ret=-EBUSY;
        }else{
                s->lock=file;
        }
-
        comedi_spin_unlock_irqrestore(&big_comedi_lock, flags);
 
        if(ret<0)
index 39e3ee2ad2bb225bd31e62ea14f8c5c5c643dec7..78cab126edfddb71daeeefd64594d6f865266cc5 100644 (file)
@@ -335,8 +335,8 @@ int comedi_lock(comedi_t *d,unsigned int subdevice)
        if(s->busy){
                ret = -EBUSY;
        }else{
-               if(s->lock && s->lock!=d){
-                       ret = -EACCES;
+               if(s->lock){
+                       ret = -EBUSY;
                }else{
                        s->lock = d;
                }