]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/main.c
Ensure free of checked alloc memory in the case that module_init fails
[lincan.git] / lincan / src / main.c
index bb6abbff6dca4309ec20b9c974da2407136ecb26..60eb6e6799c429a652dc0dcf73df9ea1167ed681 100644 (file)
@@ -195,7 +195,7 @@ int init_module(void)
        res=register_chrdev(major,DEVICE_NAME, &can_fops);
        if (res<0) {
                CANMSG("Error registering driver.\n");
-               return -ENODEV;
+               goto register_error;
        }
 
        #ifdef CAN_WITH_RTL
@@ -300,8 +300,12 @@ int init_module(void)
                        CANMSG("Error unloading CAN driver, error: %d\n",res);
                else
                        CANMSG("No CAN devices or driver setup error.\n");
-               return -ENODEV;
 
+       register_error:
+               if ( can_del_mem_list() ) 
+                       CANMSG("Error deallocating memory\n");
+
+               return -ENODEV;
 }
 
 void cleanup_module(void)