diff options
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/control.c | 4 | ||||
-rw-r--r-- | fs/fuse/cuse.c | 4 | ||||
-rw-r--r-- | fs/fuse/dev.c | 1 | ||||
-rw-r--r-- | fs/fuse/inode.c | 12 |
4 files changed, 11 insertions, 10 deletions
diff --git a/fs/fuse/control.c b/fs/fuse/control.c index 03ff5b1eba93..75a20c092dd4 100644 --- a/fs/fuse/control.c +++ b/fs/fuse/control.c | |||
@@ -117,7 +117,7 @@ static ssize_t fuse_conn_max_background_write(struct file *file, | |||
117 | const char __user *buf, | 117 | const char __user *buf, |
118 | size_t count, loff_t *ppos) | 118 | size_t count, loff_t *ppos) |
119 | { | 119 | { |
120 | unsigned val; | 120 | unsigned uninitialized_var(val); |
121 | ssize_t ret; | 121 | ssize_t ret; |
122 | 122 | ||
123 | ret = fuse_conn_limit_write(file, buf, count, ppos, &val, | 123 | ret = fuse_conn_limit_write(file, buf, count, ppos, &val, |
@@ -154,7 +154,7 @@ static ssize_t fuse_conn_congestion_threshold_write(struct file *file, | |||
154 | const char __user *buf, | 154 | const char __user *buf, |
155 | size_t count, loff_t *ppos) | 155 | size_t count, loff_t *ppos) |
156 | { | 156 | { |
157 | unsigned val; | 157 | unsigned uninitialized_var(val); |
158 | ssize_t ret; | 158 | ssize_t ret; |
159 | 159 | ||
160 | ret = fuse_conn_limit_write(file, buf, count, ppos, &val, | 160 | ret = fuse_conn_limit_write(file, buf, count, ppos, &val, |
diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c index 3426521f3205..ee8d55042298 100644 --- a/fs/fuse/cuse.c +++ b/fs/fuse/cuse.c | |||
@@ -396,7 +396,7 @@ err_device: | |||
396 | err_region: | 396 | err_region: |
397 | unregister_chrdev_region(devt, 1); | 397 | unregister_chrdev_region(devt, 1); |
398 | err: | 398 | err: |
399 | fc->conn_error = 1; | 399 | fuse_conn_kill(fc); |
400 | goto out; | 400 | goto out; |
401 | } | 401 | } |
402 | 402 | ||
@@ -532,8 +532,6 @@ static int cuse_channel_release(struct inode *inode, struct file *file) | |||
532 | cdev_del(cc->cdev); | 532 | cdev_del(cc->cdev); |
533 | } | 533 | } |
534 | 534 | ||
535 | /* kill connection and shutdown channel */ | ||
536 | fuse_conn_kill(&cc->fc); | ||
537 | rc = fuse_dev_release(inode, file); /* puts the base reference */ | 535 | rc = fuse_dev_release(inode, file); /* puts the base reference */ |
538 | 536 | ||
539 | return rc; | 537 | return rc; |
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 7df2b5e8fbe1..f4246cfc8d87 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c | |||
@@ -1576,6 +1576,7 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode, | |||
1576 | req->pages[req->num_pages] = page; | 1576 | req->pages[req->num_pages] = page; |
1577 | req->num_pages++; | 1577 | req->num_pages++; |
1578 | 1578 | ||
1579 | offset = 0; | ||
1579 | num -= this_num; | 1580 | num -= this_num; |
1580 | total_len += this_num; | 1581 | total_len += this_num; |
1581 | index++; | 1582 | index++; |
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index ce0a2838ccd0..fca222dabe3c 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -367,11 +367,6 @@ void fuse_conn_kill(struct fuse_conn *fc) | |||
367 | wake_up_all(&fc->waitq); | 367 | wake_up_all(&fc->waitq); |
368 | wake_up_all(&fc->blocked_waitq); | 368 | wake_up_all(&fc->blocked_waitq); |
369 | wake_up_all(&fc->reserved_req_waitq); | 369 | wake_up_all(&fc->reserved_req_waitq); |
370 | mutex_lock(&fuse_mutex); | ||
371 | list_del(&fc->entry); | ||
372 | fuse_ctl_remove_conn(fc); | ||
373 | mutex_unlock(&fuse_mutex); | ||
374 | fuse_bdi_destroy(fc); | ||
375 | } | 370 | } |
376 | EXPORT_SYMBOL_GPL(fuse_conn_kill); | 371 | EXPORT_SYMBOL_GPL(fuse_conn_kill); |
377 | 372 | ||
@@ -380,7 +375,14 @@ static void fuse_put_super(struct super_block *sb) | |||
380 | struct fuse_conn *fc = get_fuse_conn_super(sb); | 375 | struct fuse_conn *fc = get_fuse_conn_super(sb); |
381 | 376 | ||
382 | fuse_send_destroy(fc); | 377 | fuse_send_destroy(fc); |
378 | |||
383 | fuse_conn_kill(fc); | 379 | fuse_conn_kill(fc); |
380 | mutex_lock(&fuse_mutex); | ||
381 | list_del(&fc->entry); | ||
382 | fuse_ctl_remove_conn(fc); | ||
383 | mutex_unlock(&fuse_mutex); | ||
384 | fuse_bdi_destroy(fc); | ||
385 | |||
384 | fuse_conn_put(fc); | 386 | fuse_conn_put(fc); |
385 | } | 387 | } |
386 | 388 | ||