aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/vme/devices/vme_user.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c
index 0d404f1a27f4..c60c80fb241d 100644
--- a/drivers/staging/vme/devices/vme_user.c
+++ b/drivers/staging/vme/devices/vme_user.c
@@ -738,6 +738,14 @@ static int __init vme_user_probe(struct device *dev, int cur_bus, int cur_slot)
738 "resource\n"); 738 "resource\n");
739 goto err_master; 739 goto err_master;
740 } 740 }
741 image[i].size_buf = PCI_BUF_SIZE;
742 image[i].kern_buf = kmalloc(image[i].size_buf, GFP_KERNEL);
743 if (image[i].kern_buf == NULL) {
744 printk(KERN_WARNING "Unable to allocate memory for "
745 "master window buffers\n");
746 err = -ENOMEM;
747 goto err_master_buf;
748 }
741 } 749 }
742 750
743 /* Create sysfs entries - on udev systems this creates the dev files */ 751 /* Create sysfs entries - on udev systems this creates the dev files */
@@ -791,6 +799,9 @@ err_sysfs:
791 799
792 /* Ensure counter set correcty to unalloc all master windows */ 800 /* Ensure counter set correcty to unalloc all master windows */
793 i = MASTER_MAX + 1; 801 i = MASTER_MAX + 1;
802err_master_buf:
803 for (i = MASTER_MINOR; i < (MASTER_MAX + 1); i++)
804 kfree(image[i].kern_buf);
794err_master: 805err_master:
795 while (i > MASTER_MINOR) { 806 while (i > MASTER_MINOR) {
796 i--; 807 i--;
@@ -826,6 +837,9 @@ static int __exit vme_user_remove(struct device *dev, int cur_bus, int cur_slot)
826 } 837 }
827 class_destroy(vme_user_sysfs_class); 838 class_destroy(vme_user_sysfs_class);
828 839
840 for (i = MASTER_MINOR; i < (MASTER_MAX + 1); i++)
841 kfree(image[i].kern_buf);
842
829 for (i = SLAVE_MINOR; i < (SLAVE_MAX + 1); i++) { 843 for (i = SLAVE_MINOR; i < (SLAVE_MAX + 1); i++) {
830 vme_slave_set(image[i].resource, 0, 0, 0, 0, VME_A32, 0); 844 vme_slave_set(image[i].resource, 0, 0, 0, 0, VME_A32, 0);
831 vme_slave_free(image[i].resource); 845 vme_slave_free(image[i].resource);