|
|
| version 1.37, 2005/05/18 01:51:43 | version 1.38, 2007/08/06 15:41:56 |
|---|---|
| Line 740 int __init dmapi_init(void) | Line 740 int __init dmapi_init(void) |
| dm_tokdata_cachep = kmem_cache_create("dm_tokdata", | dm_tokdata_cachep = kmem_cache_create("dm_tokdata", |
| sizeof(struct dm_tokdata), 0, 0, NULL, NULL); | sizeof(struct dm_tokdata), 0, 0, NULL, NULL); |
| if (dm_tokdata_cachep == NULL) | if (dm_tokdata_cachep == NULL) |
| goto out_cache_free; | goto out; |
| dm_fsreg_cachep = kmem_cache_create("dm_fsreg", | dm_fsreg_cachep = kmem_cache_create("dm_fsreg", |
| sizeof(struct dm_fsreg), 0, 0, NULL, NULL); | sizeof(struct dm_fsreg), 0, 0, NULL, NULL); |
| if (dm_fsreg_cachep == NULL) | if (dm_fsreg_cachep == NULL) |
| goto out_cache_free; | goto out_free_tokdata_cachep; |
| dm_session_cachep = kmem_cache_create("dm_session", | dm_session_cachep = kmem_cache_create("dm_session", |
| sizeof(struct dm_session), 0, 0, NULL, NULL); | sizeof(struct dm_session), 0, 0, NULL, NULL); |
| if (dm_session_cachep == NULL) | if (dm_session_cachep == NULL) |
| goto out_cache_free; | goto out_free_fsreg_cachep; |
| dm_fsys_map_cachep = kmem_cache_create("dm_fsys_map", | |
| sizeof(dm_vector_map_t), 0, 0, NULL, NULL); | |
| if (dm_fsys_map_cachep == NULL) | |
| goto out_free_session_cachep; | |
| dm_fsys_vptr_cachep = kmem_cache_create("dm_fsys_vptr", | |
| sizeof(dm_fsys_vector_t), 0, 0, NULL, NULL); | |
| if (dm_fsys_vptr_cachep == NULL) | |
| goto out_free_fsys_map_cachep; | |
| ret = misc_register(&dmapi_dev); | ret = misc_register(&dmapi_dev); |
| if( ret != 0 ) | if (ret) { |
| printk(KERN_ERR "dmapi_init: misc_register returned %d\n", ret); | printk(KERN_ERR "dmapi_init: misc_register returned %d\n", ret); |
| goto out_free_fsys_vptr_cachep; | |
| } | |
| dmapi_init_procfs(dmapi_dev.minor); | dmapi_init_procfs(dmapi_dev.minor); |
| return 0; | return 0; |
| out_cache_free: | out_free_fsys_vptr_cachep: |
| if (dm_tokdata_cachep) | kmem_cache_destroy(dm_fsys_vptr_cachep); |
| kmem_cache_destroy(dm_tokdata_cachep); | out_free_fsys_map_cachep: |
| if (dm_fsreg_cachep) | kmem_cache_destroy(dm_fsys_map_cachep); |
| kmem_cache_destroy(dm_fsreg_cachep); | out_free_session_cachep: |
| if (dm_session_cachep) | kmem_cache_destroy(dm_session_cachep); |
| kmem_cache_destroy(dm_session_cachep); | out_free_fsreg_cachep: |
| if (dm_fsys_map_cachep) | kmem_cache_destroy(dm_fsreg_cachep); |
| kmem_cache_destroy(dm_fsys_map_cachep); | out_free_tokdata_cachep: |
| if (dm_fsys_vptr_cachep) | kmem_cache_destroy(dm_tokdata_cachep); |
| kmem_cache_destroy(dm_fsys_vptr_cachep); | out: |
| return -ENOMEM; | return -ENOMEM; |
| } | } |