fuse: rcu-delay freeing fuse_conn

makes ->permission() and ->d_revalidate() safety in RCU mode independent
from vfsmount_lock.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2013-10-03 21:21:39 -04:00
parent 1adfcb03e3
commit dd3e2c55a4
3 changed files with 4 additions and 2 deletions

View File

@ -473,7 +473,7 @@ err:
static void cuse_fc_release(struct fuse_conn *fc)
{
struct cuse_conn *cc = fc_to_cc(fc);
kfree(cc);
kfree_rcu(cc, fc.rcu);
}
/**

View File

@ -377,6 +377,8 @@ struct fuse_conn {
/** Refcount */
atomic_t count;
struct rcu_head rcu;
/** The user id for this mount */
kuid_t user_id;

View File

@ -918,7 +918,7 @@ static void fuse_send_init(struct fuse_conn *fc, struct fuse_req *req)
static void fuse_free_conn(struct fuse_conn *fc)
{
kfree(fc);
kfree_rcu(fc, rcu);
}
static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb)