]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/libfs.c
Improve queue_is_locked()
[linux-2.6-omap-h63xx.git] / fs / libfs.c
index 2319415ddb5e966fd99f3851460adfcad55de440..b004dfadd8917d4cbf91d9994a9b4893ea6b3922 100644 (file)
@@ -615,7 +615,7 @@ int simple_attr_open(struct inode *inode, struct file *file,
        return nonseekable_open(inode, file);
 }
 
-int simple_attr_close(struct inode *inode, struct file *file)
+int simple_attr_release(struct inode *inode, struct file *file)
 {
        kfree(file->private_data);
        return 0;
@@ -634,7 +634,10 @@ ssize_t simple_attr_read(struct file *file, char __user *buf,
        if (!attr->get)
                return -EACCES;
 
-       mutex_lock(&attr->mutex);
+       ret = mutex_lock_interruptible(&attr->mutex);
+       if (ret)
+               return ret;
+
        if (*ppos) {            /* continued read */
                size = strlen(attr->get_buf);
        } else {                /* first read */
@@ -666,7 +669,10 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
        if (!attr->set)
                return -EACCES;
 
-       mutex_lock(&attr->mutex);
+       ret = mutex_lock_interruptible(&attr->mutex);
+       if (ret)
+               return ret;
+
        ret = -EFAULT;
        size = min(sizeof(attr->set_buf) - 1, len);
        if (copy_from_user(attr->set_buf, buf, size))
@@ -798,6 +804,6 @@ EXPORT_SYMBOL(simple_transaction_get);
 EXPORT_SYMBOL(simple_transaction_read);
 EXPORT_SYMBOL(simple_transaction_release);
 EXPORT_SYMBOL_GPL(simple_attr_open);
-EXPORT_SYMBOL_GPL(simple_attr_close);
+EXPORT_SYMBOL_GPL(simple_attr_release);
 EXPORT_SYMBOL_GPL(simple_attr_read);
 EXPORT_SYMBOL_GPL(simple_attr_write);