Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[deliverable/linux.git] / drivers / net / wireless / rt2x00 / rt2x00dev.c
index d2a1ea98d0f23a144653ed7fceefeb62a2191e75..d62e64fe0b926a7c4a1bdf752290ae0848d60e5b 100644 (file)
@@ -1121,6 +1121,18 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
 {
        int retval = -ENOMEM;
 
+       /*
+        * Allocate the driver data memory, if necessary.
+        */
+       if (rt2x00dev->ops->drv_data_size > 0) {
+               rt2x00dev->drv_data = kzalloc(rt2x00dev->ops->drv_data_size,
+                                             GFP_KERNEL);
+               if (!rt2x00dev->drv_data) {
+                       retval = -ENOMEM;
+                       goto exit;
+               }
+       }
+
        spin_lock_init(&rt2x00dev->irqmask_lock);
        mutex_init(&rt2x00dev->csr_mutex);
 
@@ -1262,6 +1274,12 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
         * Free queue structures.
         */
        rt2x00queue_free(rt2x00dev);
+
+       /*
+        * Free the driver data.
+        */
+       if (rt2x00dev->drv_data)
+               kfree(rt2x00dev->drv_data);
 }
 EXPORT_SYMBOL_GPL(rt2x00lib_remove_dev);
 
This page took 0.028844 seconds and 5 git commands to generate.