summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/new.c9
-rw-r--r--ncr-limits.c11
-rw-r--r--ncr.c2
-rw-r--r--ncr_int.h1
4 files changed, 15 insertions, 8 deletions
diff --git a/examples/new.c b/examples/new.c
index 8d0adb5bee1..afe9cf0feb1 100644
--- a/examples/new.c
+++ b/examples/new.c
@@ -128,22 +128,21 @@ test_ncr_data(int cfd)
kdata.append_flag = 0;
if (ioctl(cfd, NCRIO_DATA_GET, &kdata)) {
- perror("ioctl");
fprintf(stderr, "Verified that unexportable data cannot be exported\n");
} else {
fprintf(stderr, "Unexportable data were exported!?\n");
- return 1; /* ok */
+ return 1;
}
- for (i=0;i<512;i++ ) {
+ for (i=0;i<256;i++ ) {
init.max_object_size = DATA_SIZE;
init.flags = 0;
init.initial_data = data;
init.initial_data_size = sizeof(data);
if (ioctl(cfd, NCRIO_DATA_INIT, &init)) {
- perror("ioctl(NCRIO_DATA_INIT)");
- fprintf(stderr, "Reached maximum limit at: %d data\n", i);
+ fprintf(stderr, "Reached maximum limit at: %d data items\n", i);
+ break;
}
}
diff --git a/ncr-limits.c b/ncr-limits.c
index c65b7b333d7..df6be74ca5b 100644
--- a/ncr-limits.c
+++ b/ncr-limits.c
@@ -26,6 +26,8 @@
#include "cryptodev.h"
#include <asm/atomic.h>
#include <linux/version.h>
+#include <linux/file.h>
+#include <linux/cred.h>
#include "ncr.h"
#include "ncr_int.h"
@@ -57,7 +59,9 @@ struct limit_process_item_st {
struct limit_st {
struct list_sem_st users;
struct list_sem_st processes;
-} limits;
+};
+
+static struct limit_st limits;
void ncr_limits_init(void)
{
@@ -87,6 +91,7 @@ int add = 1;
list_for_each_entry(uitem, &limits.users.list, list) {
if (uitem->uid == uid && uitem->type == type) {
add = 0;
+printk("user: %d max: %d, count: %d\n", (int)uid, max_per_user[type], atomic_read(&uitem->cnt));
if (atomic_add_unless(&uitem->cnt, 1, max_per_user[type])==0) {
err();
up(&limits.users.sem);
@@ -96,7 +101,7 @@ int add = 1;
}
if (add) {
- uitem = kmalloc(GFP_KERNEL, sizeof(*uitem));
+ uitem = kmalloc( sizeof(*uitem), GFP_KERNEL);
if (uitem == NULL) {
err();
return -ENOMEM;
@@ -125,7 +130,7 @@ int add = 1;
if (add) {
- pitem = kmalloc(GFP_KERNEL, sizeof(*pitem));
+ pitem = kmalloc(sizeof(*pitem), GFP_KERNEL);
if (uitem == NULL) {
err();
return -ENOMEM;
diff --git a/ncr.c b/ncr.c
index 9e40ac05330..2a3cd51644f 100644
--- a/ncr.c
+++ b/ncr.c
@@ -50,6 +50,8 @@ void* ncr_init_lists(void)
init_MUTEX(&lst->key.sem);
INIT_LIST_HEAD(&lst->key.list);
+ ncr_limits_init();
+
return lst;
}
diff --git a/ncr_int.h b/ncr_int.h
index 82141ac6112..58fda2255cd 100644
--- a/ncr_int.h
+++ b/ncr_int.h
@@ -91,5 +91,6 @@ typedef enum {
void ncr_limits_remove(struct file *filp, limits_type_t type);
int ncr_limits_add_and_check(struct file *filp, limits_type_t type);
+void ncr_limits_init(void);
#endif