summaryrefslogtreecommitdiff
path: root/fs/smb/server/mgmt/ksmbd_ida.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/smb/server/mgmt/ksmbd_ida.c')
-rw-r--r--fs/smb/server/mgmt/ksmbd_ida.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/fs/smb/server/mgmt/ksmbd_ida.c b/fs/smb/server/mgmt/ksmbd_ida.c
new file mode 100644
index 000000000000..0e2ae994ab52
--- /dev/null
+++ b/fs/smb/server/mgmt/ksmbd_ida.c
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2018 Samsung Electronics Co., Ltd.
+ */
+
+#include "ksmbd_ida.h"
+#include "../glob.h"
+
+int ksmbd_acquire_smb2_tid(struct ida *ida)
+{
+ return ida_alloc_range(ida, 1, 0xFFFFFFFE, KSMBD_DEFAULT_GFP);
+}
+
+int ksmbd_acquire_smb2_uid(struct ida *ida)
+{
+ int id;
+
+ id = ida_alloc_min(ida, 1, KSMBD_DEFAULT_GFP);
+ if (id == 0xFFFE)
+ id = ida_alloc_min(ida, 1, KSMBD_DEFAULT_GFP);
+
+ return id;
+}
+
+int ksmbd_acquire_async_msg_id(struct ida *ida)
+{
+ return ida_alloc_min(ida, 1, KSMBD_DEFAULT_GFP);
+}
+
+int ksmbd_acquire_id(struct ida *ida)
+{
+ return ida_alloc(ida, KSMBD_DEFAULT_GFP);
+}
+
+void ksmbd_release_id(struct ida *ida, int id)
+{
+ ida_free(ida, id);
+}