]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/ipmi/ipmi_devintf.c
device create: char: convert device_create_drvdata to device_create
[linux-2.6-omap-h63xx.git] / drivers / char / ipmi / ipmi_devintf.c
index c2aa44ee6eb6d89848e68ee42e1b3cba4a799ab7..835a33c8d5f510c7ff0ae3e0360e6ef8ec7f2551 100644 (file)
@@ -43,6 +43,7 @@
 #include <linux/init.h>
 #include <linux/device.h>
 #include <linux/compat.h>
+#include <linux/smp_lock.h>
 
 struct ipmi_file_private
 {
@@ -100,7 +101,9 @@ static int ipmi_fasync(int fd, struct file *file, int on)
        struct ipmi_file_private *priv = file->private_data;
        int                      result;
 
+       lock_kernel(); /* could race against open() otherwise */
        result = fasync_helper(fd, file, on, &priv->fasync_queue);
+       unlock_kernel();
 
        return (result);
 }
@@ -121,6 +124,7 @@ static int ipmi_open(struct inode *inode, struct file *file)
        if (!priv)
                return -ENOMEM;
 
+       lock_kernel();
        priv->file = file;
 
        rv = ipmi_create_user(if_num,
@@ -129,7 +133,7 @@ static int ipmi_open(struct inode *inode, struct file *file)
                              &(priv->user));
        if (rv) {
                kfree(priv);
-               return rv;
+               goto out;
        }
 
        file->private_data = priv;
@@ -144,7 +148,9 @@ static int ipmi_open(struct inode *inode, struct file *file)
        priv->default_retries = -1;
        priv->default_retry_time_ms = 0;
 
-       return 0;
+out:
+       unlock_kernel();
+       return rv;
 }
 
 static int ipmi_release(struct inode *inode, struct file *file)
@@ -865,7 +871,7 @@ static void ipmi_new_smi(int if_num, struct device *device)
        entry->dev = dev;
 
        mutex_lock(&reg_list_mutex);
-       class_device_create(ipmi_class, NULL, dev, device, "ipmi%d", if_num);
+       device_create(ipmi_class, device, dev, NULL, "ipmi%d", if_num);
        list_add(&entry->link, &reg_list);
        mutex_unlock(&reg_list_mutex);
 }
@@ -883,7 +889,7 @@ static void ipmi_smi_gone(int if_num)
                        break;
                }
        }
-       class_device_destroy(ipmi_class, dev);
+       device_destroy(ipmi_class, dev);
        mutex_unlock(&reg_list_mutex);
 }
 
@@ -938,7 +944,7 @@ static __exit void cleanup_ipmi(void)
        mutex_lock(&reg_list_mutex);
        list_for_each_entry_safe(entry, entry2, &reg_list, link) {
                list_del(&entry->link);
-               class_device_destroy(ipmi_class, entry->dev);
+               device_destroy(ipmi_class, entry->dev);
                kfree(entry);
        }
        mutex_unlock(&reg_list_mutex);