summaryrefslogtreecommitdiffstats
path: root/crypto/userspace/ncr-int.h
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-07-31 00:53:54 +0200
committerMiloslav Trmač <mitr@redhat.com>2010-07-31 00:53:54 +0200
commit2bc2319cbe2ec8ead62b816cc15ed155486f0ae0 (patch)
tree3c2336749da4cbb881ebe56903f9f026e17b4a4e /crypto/userspace/ncr-int.h
parent682bdfb751e081a6633c78a2cf20e2d81a2ca03c (diff)
parent49d7012c4c62f6681378a56d9af4d721178b8ad3 (diff)
downloadkernel-crypto-2bc2319cbe2ec8ead62b816cc15ed155486f0ae0.tar.gz
kernel-crypto-2bc2319cbe2ec8ead62b816cc15ed155486f0ae0.tar.xz
kernel-crypto-2bc2319cbe2ec8ead62b816cc15ed155486f0ae0.zip
Merge branch 'standalone-rename' into userspace-crypto
Conflicts: crypto/userspace/ncr-int.h crypto/userspace/ncr-limits.c
Diffstat (limited to 'crypto/userspace/ncr-int.h')
-rw-r--r--crypto/userspace/ncr-int.h61
1 files changed, 29 insertions, 32 deletions
diff --git a/crypto/userspace/ncr-int.h b/crypto/userspace/ncr-int.h
index 462c83d5de6..c93bf4d8290 100644
--- a/crypto/userspace/ncr-int.h
+++ b/crypto/userspace/ncr-int.h
@@ -1,6 +1,8 @@
#ifndef NCR_INT_H
# define NCR_INT_H
+#include <linux/idr.h>
+#include <linux/mutex.h>
#include <linux/ncr.h>
#include <asm/atomic.h>
#include "cryptodev_int.h"
@@ -31,8 +33,6 @@ struct algo_properties_st {
};
struct session_item_st {
- struct list_head list;
-
const struct algo_properties_st *algorithm;
ncr_crypto_op_t op;
@@ -59,7 +59,6 @@ struct session_item_st {
};
struct key_item_st {
- struct list_head list;
/* This object is also not protected from concurrent access.
*/
ncr_key_type_t type;
@@ -90,19 +89,16 @@ struct key_item_st {
ncr_key_t desc;
};
-struct list_sem_st {
- struct list_head list;
- struct semaphore sem;
-};
-
/* all the data associated with the open descriptor
* are here.
*/
struct ncr_lists {
- struct list_sem_st key;
+ struct mutex key_idr_mutex;
+ struct idr key_idr;
/* sessions */
- struct list_sem_st sessions;
+ struct mutex session_idr_mutex;
+ struct idr session_idr;
};
void* ncr_init_lists(void);
@@ -112,29 +108,30 @@ int ncr_ioctl(struct ncr_lists*, struct file *filp,
unsigned int cmd, unsigned long arg);
/* key derivation */
-int ncr_key_derive(struct list_sem_st* key_lst, void __user* arg);
+int ncr_key_derive(struct ncr_lists *lst, void __user* arg);
/* key handling */
-int ncr_key_init(struct list_sem_st*, void __user* arg);
-int ncr_key_deinit(struct list_sem_st*, void __user* arg);
-int ncr_key_export(struct list_sem_st* key_lst,void __user* arg);
-int ncr_key_import(struct list_sem_st* key_lst,void __user* arg);
-void ncr_key_list_deinit(struct list_sem_st* lst);
-int ncr_key_generate(struct list_sem_st* data_lst, void __user* arg);
-int ncr_key_info(struct list_sem_st*, void __user* arg);
-
-int ncr_key_generate_pair(struct list_sem_st* lst, void __user* arg);
-int ncr_key_get_public(struct list_sem_st* lst, void __user* arg);
-
-int ncr_key_item_get_read(struct key_item_st**st, struct list_sem_st* lst,
+int ncr_key_init(struct ncr_lists *lst, void __user* arg);
+int ncr_key_deinit(struct ncr_lists *lst, void __user* arg);
+int ncr_key_export(struct ncr_lists *lst, void __user* arg);
+int ncr_key_import(struct ncr_lists *lst, void __user* arg);
+void ncr_key_list_deinit(struct ncr_lists *lst);
+int ncr_key_generate(struct ncr_lists *lst, void __user* arg);
+int ncr_key_info(struct ncr_lists *lst, void __user* arg);
+
+int ncr_key_generate_pair(struct ncr_lists *lst, void __user* arg);
+int ncr_key_get_public(struct ncr_lists *lst, void __user* arg);
+
+int ncr_key_item_get_read(struct key_item_st**st, struct ncr_lists *lst,
ncr_key_t desc);
/* get key item for writing */
-int ncr_key_item_get_write( struct key_item_st** st,
- struct list_sem_st* lst, ncr_key_t desc);
+int ncr_key_item_get_write( struct key_item_st** st,
+ struct ncr_lists *lst, ncr_key_t desc);
void _ncr_key_item_put( struct key_item_st* item);
typedef enum {
LIMIT_TYPE_KEY,
+ NUM_LIMIT_TYPES
} limits_type_t;
void ncr_limits_remove(uid_t uid, pid_t pid, limits_type_t type);
@@ -142,16 +139,16 @@ int ncr_limits_add_and_check(uid_t uid, pid_t pid, limits_type_t type);
void ncr_limits_init(void);
void ncr_limits_deinit(void);
-int ncr_key_wrap(struct list_sem_st* keys, void __user* arg);
-int ncr_key_unwrap(struct list_sem_st*, void __user* arg);
-int ncr_key_storage_wrap(struct list_sem_st* key_lst, void __user* arg);
-int ncr_key_storage_unwrap(struct list_sem_st*, void __user* arg);
+int ncr_key_wrap(struct ncr_lists *lst, void __user* arg);
+int ncr_key_unwrap(struct ncr_lists *lst, void __user* arg);
+int ncr_key_storage_wrap(struct ncr_lists *lst, void __user* arg);
+int ncr_key_storage_unwrap(struct ncr_lists *lst, void __user* arg);
/* sessions */
-struct session_item_st* ncr_session_new(struct list_sem_st* lst);
+struct session_item_st* ncr_session_new(struct ncr_lists *lst);
void _ncr_sessions_item_put( struct session_item_st* item);
-struct session_item_st* ncr_sessions_item_get( struct list_sem_st* lst, ncr_session_t desc);
-void ncr_sessions_list_deinit(struct list_sem_st* lst);
+struct session_item_st* ncr_sessions_item_get(struct ncr_lists *lst, ncr_session_t desc);
+void ncr_sessions_list_deinit(struct ncr_lists *lst);
int ncr_session_init(struct ncr_lists* lists, void __user* arg);
int ncr_session_update(struct ncr_lists* lists, void __user* arg);