summaryrefslogtreecommitdiffstats
path: root/ncr.c
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-08-16 16:06:43 +0200
committerMiloslav Trmač <mitr@redhat.com>2010-08-24 23:43:46 +0200
commit3ab6fc7d0d19f62b48ecef310249014192289613 (patch)
tree108739dea2e11cb87bb3790eb785331e4cef2308 /ncr.c
parent9aa6874612bf258f0a9795371db9b3dc514376aa (diff)
downloadkernel-crypto-3ab6fc7d0d19f62b48ecef310249014192289613.tar.gz
kernel-crypto-3ab6fc7d0d19f62b48ecef310249014192289613.tar.xz
kernel-crypto-3ab6fc7d0d19f62b48ecef310249014192289613.zip
Convert *_KEY_WRAP
Diffstat (limited to 'ncr.c')
-rw-r--r--ncr.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/ncr.c b/ncr.c
index fb8645c1895..202ddc926b4 100644
--- a/ncr.c
+++ b/ncr.c
@@ -178,8 +178,7 @@ ncr_ioctl(struct ncr_lists *lst, unsigned int cmd, unsigned long arg_)
}
return ncr_key_deinit(lst, key);
}
- case NCRIO_KEY_WRAP:
- return ncr_key_wrap(lst, arg);
+ CASE_NO_OUTPUT(NCRIO_KEY_WRAP, ncr_key_wrap, ncr_key_wrap);
case NCRIO_KEY_UNWRAP:
return ncr_key_unwrap(lst, arg);
case NCRIO_KEY_STORAGE_WRAP:
@@ -240,6 +239,25 @@ static void convert_ncr_key_import(struct ncr_key_import *new,
new->data_size = old->data_size;
}
+struct compat_ncr_key_wrap {
+ __u32 input_size, output_size;
+ ncr_key_t wrapping_key;
+ ncr_key_t source_key;
+ compat_uptr_t buffer;
+ compat_int_t buffer_size;
+ __NL_ATTRIBUTES;
+};
+#define COMPAT_NCRIO_KEY_WRAP _IOWR('c', 250, struct compat_ncr_key_wrap)
+
+static void convert_ncr_key_wrap(struct ncr_key_wrap *new,
+ const struct compat_ncr_key_wrap *old)
+{
+ new->wrapping_key = old->wrapping_key;
+ new->source_key = old->source_key;
+ new->buffer = compat_ptr(old->buffer);
+ new->buffer_size = old->buffer_size;
+}
+
long
ncr_compat_ioctl(struct ncr_lists *lst, unsigned int cmd, unsigned long arg_)
{
@@ -277,6 +295,7 @@ ncr_compat_ioctl(struct ncr_lists *lst, unsigned int cmd, unsigned long arg_)
CASE_NO_OUTPUT(COMPAT_NCRIO_KEY_EXPORT, ncr_key_export, ncr_key_export);
CASE_NO_OUTPUT(COMPAT_NCRIO_KEY_IMPORT, ncr_key_import, ncr_key_import);
+ CASE_NO_OUTPUT(COMPAT_NCRIO_KEY_WRAP, ncr_key_wrap, ncr_key_wrap);
default:
return -EINVAL;
#undef CASE_NO_OUTPUT