#include <linux/list.h>
#include <linux/jhash.h>
#include <linux/slab.h>
#include <linux/rwsem.h>
#include <linux/parser.h>
#include <linux/namei.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include "share_config.h"
#include "user_config.h"
#include "user_session.h"
#include "../transport_ipc.h"
#include "../misc.h"
#define SHARE_HASH_BITS …
static DEFINE_HASHTABLE(shares_table, SHARE_HASH_BITS);
static DECLARE_RWSEM(shares_table_lock);
struct ksmbd_veto_pattern { … };
static unsigned int share_name_hash(const char *name)
{ … }
static void kill_share(struct ksmbd_share_config *share)
{ … }
void ksmbd_share_config_del(struct ksmbd_share_config *share)
{ … }
void __ksmbd_share_config_put(struct ksmbd_share_config *share)
{ … }
static struct ksmbd_share_config *
__get_share_config(struct ksmbd_share_config *share)
{ … }
static struct ksmbd_share_config *__share_lookup(const char *name)
{ … }
static int parse_veto_list(struct ksmbd_share_config *share,
char *veto_list,
int veto_list_sz)
{ … }
static struct ksmbd_share_config *share_config_request(struct unicode_map *um,
const char *name)
{ … }
struct ksmbd_share_config *ksmbd_share_config_get(struct unicode_map *um,
const char *name)
{ … }
bool ksmbd_share_veto_filename(struct ksmbd_share_config *share,
const char *filename)
{ … }