diff options
| -rw-r--r-- | fs/fuse/cuse.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c index ee8d55042298..048e89f25082 100644 --- a/fs/fuse/cuse.c +++ b/fs/fuse/cuse.c | |||
| @@ -45,7 +45,6 @@ | |||
| 45 | #include <linux/miscdevice.h> | 45 | #include <linux/miscdevice.h> |
| 46 | #include <linux/mutex.h> | 46 | #include <linux/mutex.h> |
| 47 | #include <linux/slab.h> | 47 | #include <linux/slab.h> |
| 48 | #include <linux/spinlock.h> | ||
| 49 | #include <linux/stat.h> | 48 | #include <linux/stat.h> |
| 50 | #include <linux/module.h> | 49 | #include <linux/module.h> |
| 51 | 50 | ||
| @@ -63,7 +62,7 @@ struct cuse_conn { | |||
| 63 | bool unrestricted_ioctl; | 62 | bool unrestricted_ioctl; |
| 64 | }; | 63 | }; |
| 65 | 64 | ||
| 66 | static DEFINE_SPINLOCK(cuse_lock); /* protects cuse_conntbl */ | 65 | static DEFINE_MUTEX(cuse_lock); /* protects registration */ |
| 67 | static struct list_head cuse_conntbl[CUSE_CONNTBL_LEN]; | 66 | static struct list_head cuse_conntbl[CUSE_CONNTBL_LEN]; |
| 68 | static struct class *cuse_class; | 67 | static struct class *cuse_class; |
| 69 | 68 | ||
| @@ -114,14 +113,14 @@ static int cuse_open(struct inode *inode, struct file *file) | |||
| 114 | int rc; | 113 | int rc; |
| 115 | 114 | ||
| 116 | /* look up and get the connection */ | 115 | /* look up and get the connection */ |
| 117 | spin_lock(&cuse_lock); | 116 | mutex_lock(&cuse_lock); |
| 118 | list_for_each_entry(pos, cuse_conntbl_head(devt), list) | 117 | list_for_each_entry(pos, cuse_conntbl_head(devt), list) |
| 119 | if (pos->dev->devt == devt) { | 118 | if (pos->dev->devt == devt) { |
| 120 | fuse_conn_get(&pos->fc); | 119 | fuse_conn_get(&pos->fc); |
| 121 | cc = pos; | 120 | cc = pos; |
| 122 | break; | 121 | break; |
| 123 | } | 122 | } |
| 124 | spin_unlock(&cuse_lock); | 123 | mutex_unlock(&cuse_lock); |
| 125 | 124 | ||
| 126 | /* dead? */ | 125 | /* dead? */ |
| 127 | if (!cc) | 126 | if (!cc) |
| @@ -377,9 +376,9 @@ static void cuse_process_init_reply(struct fuse_conn *fc, struct fuse_req *req) | |||
| 377 | cc->cdev = cdev; | 376 | cc->cdev = cdev; |
| 378 | 377 | ||
| 379 | /* make the device available */ | 378 | /* make the device available */ |
| 380 | spin_lock(&cuse_lock); | 379 | mutex_lock(&cuse_lock); |
| 381 | list_add(&cc->list, cuse_conntbl_head(devt)); | 380 | list_add(&cc->list, cuse_conntbl_head(devt)); |
| 382 | spin_unlock(&cuse_lock); | 381 | mutex_unlock(&cuse_lock); |
| 383 | 382 | ||
| 384 | /* announce device availability */ | 383 | /* announce device availability */ |
| 385 | dev_set_uevent_suppress(dev, 0); | 384 | dev_set_uevent_suppress(dev, 0); |
| @@ -520,9 +519,9 @@ static int cuse_channel_release(struct inode *inode, struct file *file) | |||
| 520 | int rc; | 519 | int rc; |
| 521 | 520 | ||
| 522 | /* remove from the conntbl, no more access from this point on */ | 521 | /* remove from the conntbl, no more access from this point on */ |
| 523 | spin_lock(&cuse_lock); | 522 | mutex_lock(&cuse_lock); |
| 524 | list_del_init(&cc->list); | 523 | list_del_init(&cc->list); |
| 525 | spin_unlock(&cuse_lock); | 524 | mutex_unlock(&cuse_lock); |
| 526 | 525 | ||
| 527 | /* remove device */ | 526 | /* remove device */ |
| 528 | if (cc->dev) | 527 | if (cc->dev) |
