]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/close.c
Use inode argument to obtain minor number even in extended close function.
[lincan.git] / lincan / src / close.c
index 157acfaff99033f510929720a14fdfc37e1f4204..6a0ca6e0190578fc18b8adf5119a2bd525920ece 100644 (file)
@@ -49,19 +49,20 @@ int can_close(struct inode *inode, struct file *file)
        struct canque_ends_t *qends;
        struct msgobj_t *obj;
        can_spin_irqflags_t iflags;
-       
+       int minor_nr = INODE2MINOR_NR(inode);
+
        if(!canuser || (canuser->magic != CAN_USER_MAGIC)){
                CANMSG("can_close: bad canuser magic\n");
                return -ENODEV;
        }
-       if ((chip=objects_p[MINOR_NR]->hostchip) == NULL) {
-               CANMSG("There is no hardware support for the device file with minor nr.: %d\n",MINOR_NR);
+       if ((chip=objects_p[minor_nr]->hostchip) == NULL) {
+               CANMSG("There is no hardware support for the device file with minor nr.: %d\n",minor_nr);
                return -ENODEV;
        }
-       
+
        obj = canuser->msgobj;
        qends = canuser->qends;
-       
+
     #ifdef CAN_ENABLE_KERN_FASYNC
 
        can_fasync(-1, file, 0);
@@ -81,7 +82,7 @@ int can_close(struct inode *inode, struct file *file)
                can_msgobj_clear_fl(obj,OPENED);
        };
        can_spin_unlock_irqrestore(&canuser_manipulation_lock, iflags);
-       
+
     #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,50))
        MOD_DEC_USE_COUNT;
     #endif