diff options
author | Atte Heikkilä <atteh.mailbox@gmail.com> | 2022-08-09 01:02:14 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-08-11 01:05:18 -0500 |
commit | 4963d74f8a6cc0eafd71d9ffc13e3a11ff1dd160 (patch) | |
tree | 732102c08e923a5dc04caa5ec32db3a29739cedc /fs/ksmbd/mgmt/share_config.c | |
parent | fe54833dc8d97ef387e86f7c80537d51c503ca75 (diff) | |
download | linux-4963d74f8a6cc0eafd71d9ffc13e3a11ff1dd160.tar.bz2 |
ksmbd: request update to stale share config
ksmbd_share_config_get() retrieves the cached share config as long
as there is at least one connection to the share. This is an issue when
the user space utilities are used to update share configs. In that case
there is a need to inform ksmbd that it should not use the cached share
config for a new connection to the share. With these changes the tree
connection flag KSMBD_TREE_CONN_FLAG_UPDATE indicates this. When this
flag is set, ksmbd removes the share config from the shares hash table
meaning that ksmbd_share_config_get() ends up requesting a share config
from user space.
Signed-off-by: Atte Heikkilä <atteh.mailbox@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/ksmbd/mgmt/share_config.c')
-rw-r--r-- | fs/ksmbd/mgmt/share_config.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ksmbd/mgmt/share_config.c b/fs/ksmbd/mgmt/share_config.c index 70655af93b44..c9bca1c2c834 100644 --- a/fs/ksmbd/mgmt/share_config.c +++ b/fs/ksmbd/mgmt/share_config.c @@ -51,12 +51,16 @@ static void kill_share(struct ksmbd_share_config *share) kfree(share); } -void __ksmbd_share_config_put(struct ksmbd_share_config *share) +void ksmbd_share_config_del(struct ksmbd_share_config *share) { down_write(&shares_table_lock); hash_del(&share->hlist); up_write(&shares_table_lock); +} +void __ksmbd_share_config_put(struct ksmbd_share_config *share) +{ + ksmbd_share_config_del(share); kill_share(share); } |