Lines Matching refs:share

35 static void kill_share(struct ksmbd_share_config *share)
37 while (!list_empty(&share->veto_list)) {
40 p = list_entry(share->veto_list.next,
48 if (share->path)
49 path_put(&share->vfs_path);
50 kfree(share->name);
51 kfree(share->path);
52 kfree(share);
55 void ksmbd_share_config_del(struct ksmbd_share_config *share)
58 hash_del(&share->hlist);
62 void __ksmbd_share_config_put(struct ksmbd_share_config *share)
64 ksmbd_share_config_del(share);
65 kill_share(share);
69 __get_share_config(struct ksmbd_share_config *share)
71 if (!atomic_inc_not_zero(&share->refcount))
73 return share;
78 struct ksmbd_share_config *share;
81 hash_for_each_possible(shares_table, share, hlist, key) {
82 if (!strcmp(name, share->name))
83 return share;
88 static int parse_veto_list(struct ksmbd_share_config *share,
114 list_add(&p->list, &share->veto_list);
127 struct ksmbd_share_config *share = NULL;
151 share = kzalloc(sizeof(struct ksmbd_share_config), GFP_KERNEL);
152 if (!share)
155 share->flags = resp->flags;
156 atomic_set(&share->refcount, 1);
157 INIT_LIST_HEAD(&share->veto_list);
158 share->name = kstrdup(name, GFP_KERNEL);
160 if (!test_share_config_flag(share, KSMBD_SHARE_FLAG_PIPE)) {
166 share->path = kstrndup(ksmbd_share_config_path(resp), path_len,
168 if (share->path)
169 share->path_sz = strlen(share->path);
170 share->create_mask = resp->create_mask;
171 share->directory_mask = resp->directory_mask;
172 share->force_create_mode = resp->force_create_mode;
173 share->force_directory_mode = resp->force_directory_mode;
174 share->force_uid = resp->force_uid;
175 share->force_gid = resp->force_gid;
176 ret = parse_veto_list(share,
179 if (!ret && share->path) {
180 ret = kern_path(share->path, 0, &share->vfs_path);
183 share->path);
185 kfree(share->path);
186 share->path = NULL;
189 if (ret || !share->name) {
190 kill_share(share);
191 share = NULL;
201 hash_add(shares_table, &share->hlist, share_name_hash(name));
203 kill_share(share);
204 share = lookup;
210 return share;
216 struct ksmbd_share_config *share;
219 share = __share_lookup(name);
220 if (share)
221 share = __get_share_config(share);
224 if (share)
225 return share;
229 bool ksmbd_share_veto_filename(struct ksmbd_share_config *share,
234 list_for_each_entry(p, &share->veto_list, list) {