mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
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:
parent
1adfcb03e3
commit
dd3e2c55a4
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user