libfs: make simple attributes interruptible
PATCH 2/3 libfs: make simple attributes interruptible
Use mutex_lock_interruptible in simple_attr_read/write.
fs/libfs.c +8 -2
@@ -634,7 +634,10 @@ ssize_t simple_attr_read(struct file *fiif (!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 *fif (!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))