Commit 2004b57c authored by Harald Freudenberger's avatar Harald Freudenberger Committed by Heiko Carstens

s390/zcrypt: code cleanup

This patch tries to fix as much as possible of the
checkpatch.pl --strict findings:
  CHECK: Logical continuations should be on the previous line
  CHECK: No space is necessary after a cast
  CHECK: Alignment should match open parenthesis
  CHECK: 'useable' may be misspelled - perhaps 'usable'?
  WARNING: Possible repeated word: 'is'
  CHECK: spaces preferred around that '*' (ctx:VxV)
  CHECK: Comparison to NULL could be written "!msg"
  CHECK: Prefer kzalloc(sizeof(*zc)...) over kzalloc(sizeof(struct...)...)
  CHECK: Unnecessary parentheses around resp_type->work
  CHECK: Avoid CamelCase: <xcRB>

There is no functional change comming with this patch, only
code cleanup, renaming, whitespaces, indenting, ... but no
semantic change in any way. Also the API (zcrypt and pkey
header file) is semantically unchanged.
Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Reviewed-by: default avatarJürgen Christ <jchrist@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 6acb086d
...@@ -171,7 +171,7 @@ struct pkey_skey2pkey { ...@@ -171,7 +171,7 @@ struct pkey_skey2pkey {
#define PKEY_SKEY2PKEY _IOWR(PKEY_IOCTL_MAGIC, 0x06, struct pkey_skey2pkey) #define PKEY_SKEY2PKEY _IOWR(PKEY_IOCTL_MAGIC, 0x06, struct pkey_skey2pkey)
/* /*
* Verify the given CCA AES secure key for being able to be useable with * Verify the given CCA AES secure key for being able to be usable with
* the pkey module. Check for correct key type and check for having at * the pkey module. Check for correct key type and check for having at
* least one crypto card being able to handle this key (master key * least one crypto card being able to handle this key (master key
* or old master key verification pattern matches). * or old master key verification pattern matches).
......
...@@ -236,8 +236,8 @@ struct zcrypt_device_matrix_ext { ...@@ -236,8 +236,8 @@ struct zcrypt_device_matrix_ext {
}; };
#define AUTOSELECT 0xFFFFFFFF #define AUTOSELECT 0xFFFFFFFF
#define AUTOSEL_AP ((__u16) 0xFFFF) #define AUTOSEL_AP ((__u16)0xFFFF)
#define AUTOSEL_DOM ((__u16) 0xFFFF) #define AUTOSEL_DOM ((__u16)0xFFFF)
#define ZCRYPT_IOCTL_MAGIC 'z' #define ZCRYPT_IOCTL_MAGIC 'z'
...@@ -303,12 +303,12 @@ struct zcrypt_device_matrix_ext { ...@@ -303,12 +303,12 @@ struct zcrypt_device_matrix_ext {
/** /**
* Supported ioctl calls * Supported ioctl calls
*/ */
#define ICARSAMODEXPO _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0) #define ICARSAMODEXPO _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0)
#define ICARSACRT _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0) #define ICARSACRT _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0)
#define ZSECSENDCPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0) #define ZSECSENDCPRB _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0)
#define ZSENDEP11CPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0) #define ZSENDEP11CPRB _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0)
#define ZCRYPT_DEVICE_STATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x5f, 0) #define ZCRYPT_DEVICE_STATUS _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x5f, 0)
#define ZCRYPT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x58, char[MAX_ZDEV_CARDIDS_EXT]) #define ZCRYPT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x58, char[MAX_ZDEV_CARDIDS_EXT])
#define ZCRYPT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x59, char[MAX_ZDEV_CARDIDS_EXT]) #define ZCRYPT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x59, char[MAX_ZDEV_CARDIDS_EXT])
#define ZCRYPT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x5a, int[MAX_ZDEV_CARDIDS_EXT]) #define ZCRYPT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x5a, int[MAX_ZDEV_CARDIDS_EXT])
...@@ -350,7 +350,7 @@ struct zcrypt_device_matrix { ...@@ -350,7 +350,7 @@ struct zcrypt_device_matrix {
}; };
/* Deprecated: use ZCRYPT_DEVICE_STATUS */ /* Deprecated: use ZCRYPT_DEVICE_STATUS */
#define ZDEVICESTATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x4f, 0) #define ZDEVICESTATUS _IOC(_IOC_READ | _IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x4f, 0)
/* Deprecated: use ZCRYPT_STATUS_MASK */ /* Deprecated: use ZCRYPT_STATUS_MASK */
#define Z90STAT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x48, char[64]) #define Z90STAT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x48, char[64])
/* Deprecated: use ZCRYPT_QDEPTH_MASK */ /* Deprecated: use ZCRYPT_QDEPTH_MASK */
......
...@@ -179,7 +179,7 @@ static int ap_qci_available(void) ...@@ -179,7 +179,7 @@ static int ap_qci_available(void)
* ap_apft_available(): Test if AP facilities test (APFT) * ap_apft_available(): Test if AP facilities test (APFT)
* facility is available. * facility is available.
* *
* Returns 1 if APFT is is available. * Returns 1 if APFT is available.
*/ */
static int ap_apft_available(void) static int ap_apft_available(void)
{ {
...@@ -722,7 +722,7 @@ struct __ap_calc_ctrs { ...@@ -722,7 +722,7 @@ struct __ap_calc_ctrs {
static int __ap_calc_helper(struct device *dev, void *arg) static int __ap_calc_helper(struct device *dev, void *arg)
{ {
struct __ap_calc_ctrs *pctrs = (struct __ap_calc_ctrs *) arg; struct __ap_calc_ctrs *pctrs = (struct __ap_calc_ctrs *)arg;
if (is_queue_dev(dev)) { if (is_queue_dev(dev)) {
pctrs->apqns++; pctrs->apqns++;
...@@ -738,7 +738,7 @@ static void ap_calc_bound_apqns(unsigned int *apqns, unsigned int *bound) ...@@ -738,7 +738,7 @@ static void ap_calc_bound_apqns(unsigned int *apqns, unsigned int *bound)
struct __ap_calc_ctrs ctrs; struct __ap_calc_ctrs ctrs;
memset(&ctrs, 0, sizeof(ctrs)); memset(&ctrs, 0, sizeof(ctrs));
bus_for_each_dev(&ap_bus_type, NULL, (void *) &ctrs, __ap_calc_helper); bus_for_each_dev(&ap_bus_type, NULL, (void *)&ctrs, __ap_calc_helper);
*apqns = ctrs.apqns; *apqns = ctrs.apqns;
*bound = ctrs.bound; *bound = ctrs.bound;
...@@ -799,7 +799,7 @@ EXPORT_SYMBOL(ap_wait_init_apqn_bindings_complete); ...@@ -799,7 +799,7 @@ EXPORT_SYMBOL(ap_wait_init_apqn_bindings_complete);
static int __ap_queue_devices_with_id_unregister(struct device *dev, void *data) static int __ap_queue_devices_with_id_unregister(struct device *dev, void *data)
{ {
if (is_queue_dev(dev) && if (is_queue_dev(dev) &&
AP_QID_CARD(to_ap_queue(dev)->qid) == (int)(long) data) AP_QID_CARD(to_ap_queue(dev)->qid) == (int)(long)data)
device_unregister(dev); device_unregister(dev);
return 0; return 0;
} }
...@@ -812,8 +812,8 @@ static int __ap_revise_reserved(struct device *dev, void *dummy) ...@@ -812,8 +812,8 @@ static int __ap_revise_reserved(struct device *dev, void *dummy)
card = AP_QID_CARD(to_ap_queue(dev)->qid); card = AP_QID_CARD(to_ap_queue(dev)->qid);
queue = AP_QID_QUEUE(to_ap_queue(dev)->qid); queue = AP_QID_QUEUE(to_ap_queue(dev)->qid);
mutex_lock(&ap_perms_mutex); mutex_lock(&ap_perms_mutex);
devres = test_bit_inv(card, ap_perms.apm) devres = test_bit_inv(card, ap_perms.apm) &&
&& test_bit_inv(queue, ap_perms.aqm); test_bit_inv(queue, ap_perms.aqm);
mutex_unlock(&ap_perms_mutex); mutex_unlock(&ap_perms_mutex);
drvres = to_ap_drv(dev->driver)->flags drvres = to_ap_drv(dev->driver)->flags
& AP_DRIVER_FLAG_DEFAULT; & AP_DRIVER_FLAG_DEFAULT;
...@@ -844,8 +844,8 @@ int ap_owned_by_def_drv(int card, int queue) ...@@ -844,8 +844,8 @@ int ap_owned_by_def_drv(int card, int queue)
mutex_lock(&ap_perms_mutex); mutex_lock(&ap_perms_mutex);
if (test_bit_inv(card, ap_perms.apm) if (test_bit_inv(card, ap_perms.apm) &&
&& test_bit_inv(queue, ap_perms.aqm)) test_bit_inv(queue, ap_perms.aqm))
rc = 1; rc = 1;
mutex_unlock(&ap_perms_mutex); mutex_unlock(&ap_perms_mutex);
...@@ -894,8 +894,8 @@ static int ap_device_probe(struct device *dev) ...@@ -894,8 +894,8 @@ static int ap_device_probe(struct device *dev)
card = AP_QID_CARD(to_ap_queue(dev)->qid); card = AP_QID_CARD(to_ap_queue(dev)->qid);
queue = AP_QID_QUEUE(to_ap_queue(dev)->qid); queue = AP_QID_QUEUE(to_ap_queue(dev)->qid);
mutex_lock(&ap_perms_mutex); mutex_lock(&ap_perms_mutex);
devres = test_bit_inv(card, ap_perms.apm) devres = test_bit_inv(card, ap_perms.apm) &&
&& test_bit_inv(queue, ap_perms.aqm); test_bit_inv(queue, ap_perms.aqm);
mutex_unlock(&ap_perms_mutex); mutex_unlock(&ap_perms_mutex);
drvres = ap_drv->flags & AP_DRIVER_FLAG_DEFAULT; drvres = ap_drv->flags & AP_DRIVER_FLAG_DEFAULT;
if (!!devres != !!drvres) if (!!devres != !!drvres)
...@@ -916,8 +916,9 @@ static int ap_device_probe(struct device *dev) ...@@ -916,8 +916,9 @@ static int ap_device_probe(struct device *dev)
if (is_queue_dev(dev)) if (is_queue_dev(dev))
hash_del(&to_ap_queue(dev)->hnode); hash_del(&to_ap_queue(dev)->hnode);
spin_unlock_bh(&ap_queues_lock); spin_unlock_bh(&ap_queues_lock);
} else } else {
ap_check_bindings_complete(); ap_check_bindings_complete();
}
out: out:
if (rc) if (rc)
...@@ -998,8 +999,8 @@ void ap_bus_force_rescan(void) ...@@ -998,8 +999,8 @@ void ap_bus_force_rescan(void)
EXPORT_SYMBOL(ap_bus_force_rescan); EXPORT_SYMBOL(ap_bus_force_rescan);
/* /*
* A config change has happened, force an ap bus rescan. * A config change has happened, force an ap bus rescan.
*/ */
void ap_bus_cfg_chg(void) void ap_bus_cfg_chg(void)
{ {
AP_DBF_DBG("%s config change, forcing bus rescan\n", __func__); AP_DBF_DBG("%s config change, forcing bus rescan\n", __func__);
...@@ -1123,7 +1124,7 @@ int ap_parse_mask_str(const char *str, ...@@ -1123,7 +1124,7 @@ int ap_parse_mask_str(const char *str,
if (bits & 0x07) if (bits & 0x07)
return -EINVAL; return -EINVAL;
size = BITS_TO_LONGS(bits)*sizeof(unsigned long); size = BITS_TO_LONGS(bits) * sizeof(unsigned long);
newmap = kmalloc(size, GFP_KERNEL); newmap = kmalloc(size, GFP_KERNEL);
if (!newmap) if (!newmap)
return -ENOMEM; return -ENOMEM;
...@@ -1259,8 +1260,9 @@ static ssize_t poll_thread_store(struct bus_type *bus, ...@@ -1259,8 +1260,9 @@ static ssize_t poll_thread_store(struct bus_type *bus,
rc = ap_poll_thread_start(); rc = ap_poll_thread_start();
if (rc) if (rc)
count = rc; count = rc;
} else } else {
ap_poll_thread_stop(); ap_poll_thread_stop();
}
return count; return count;
} }
...@@ -1633,9 +1635,9 @@ static int ap_get_compatible_type(ap_qid_t qid, int rawtype, unsigned int func) ...@@ -1633,9 +1635,9 @@ static int ap_get_compatible_type(ap_qid_t qid, int rawtype, unsigned int func)
apinfo.mode = (func >> 26) & 0x07; apinfo.mode = (func >> 26) & 0x07;
apinfo.cat = AP_DEVICE_TYPE_CEX8; apinfo.cat = AP_DEVICE_TYPE_CEX8;
status = ap_qact(qid, 0, &apinfo); status = ap_qact(qid, 0, &apinfo);
if (status.response_code == AP_RESPONSE_NORMAL if (status.response_code == AP_RESPONSE_NORMAL &&
&& apinfo.cat >= AP_DEVICE_TYPE_CEX2A apinfo.cat >= AP_DEVICE_TYPE_CEX2A &&
&& apinfo.cat <= AP_DEVICE_TYPE_CEX8) apinfo.cat <= AP_DEVICE_TYPE_CEX8)
comp_type = apinfo.cat; comp_type = apinfo.cat;
} }
if (!comp_type) if (!comp_type)
...@@ -1655,7 +1657,7 @@ static int ap_get_compatible_type(ap_qid_t qid, int rawtype, unsigned int func) ...@@ -1655,7 +1657,7 @@ static int ap_get_compatible_type(ap_qid_t qid, int rawtype, unsigned int func)
*/ */
static int __match_card_device_with_id(struct device *dev, const void *data) static int __match_card_device_with_id(struct device *dev, const void *data)
{ {
return is_card_dev(dev) && to_ap_card(dev)->id == (int)(long)(void *) data; return is_card_dev(dev) && to_ap_card(dev)->id == (int)(long)(void *)data;
} }
/* /*
...@@ -1664,7 +1666,7 @@ static int __match_card_device_with_id(struct device *dev, const void *data) ...@@ -1664,7 +1666,7 @@ static int __match_card_device_with_id(struct device *dev, const void *data)
*/ */
static int __match_queue_device_with_qid(struct device *dev, const void *data) static int __match_queue_device_with_qid(struct device *dev, const void *data)
{ {
return is_queue_dev(dev) && to_ap_queue(dev)->qid == (int)(long) data; return is_queue_dev(dev) && to_ap_queue(dev)->qid == (int)(long)data;
} }
/* /*
...@@ -1673,8 +1675,8 @@ static int __match_queue_device_with_qid(struct device *dev, const void *data) ...@@ -1673,8 +1675,8 @@ static int __match_queue_device_with_qid(struct device *dev, const void *data)
*/ */
static int __match_queue_device_with_queue_id(struct device *dev, const void *data) static int __match_queue_device_with_queue_id(struct device *dev, const void *data)
{ {
return is_queue_dev(dev) return is_queue_dev(dev) &&
&& AP_QID_QUEUE(to_ap_queue(dev)->qid) == (int)(long) data; AP_QID_QUEUE(to_ap_queue(dev)->qid) == (int)(long)data;
} }
/* Helper function for notify_config_changed */ /* Helper function for notify_config_changed */
...@@ -1727,7 +1729,7 @@ static inline void notify_scan_complete(void) ...@@ -1727,7 +1729,7 @@ static inline void notify_scan_complete(void)
static inline void ap_scan_rm_card_dev_and_queue_devs(struct ap_card *ac) static inline void ap_scan_rm_card_dev_and_queue_devs(struct ap_card *ac)
{ {
bus_for_each_dev(&ap_bus_type, NULL, bus_for_each_dev(&ap_bus_type, NULL,
(void *)(long) ac->id, (void *)(long)ac->id,
__ap_queue_devices_with_id_unregister); __ap_queue_devices_with_id_unregister);
device_unregister(&ac->ap_dev.device); device_unregister(&ac->ap_dev.device);
} }
...@@ -1755,7 +1757,7 @@ static inline void ap_scan_domains(struct ap_card *ac) ...@@ -1755,7 +1757,7 @@ static inline void ap_scan_domains(struct ap_card *ac)
for (dom = 0; dom <= ap_max_domain_id; dom++) { for (dom = 0; dom <= ap_max_domain_id; dom++) {
qid = AP_MKQID(ac->id, dom); qid = AP_MKQID(ac->id, dom);
dev = bus_find_device(&ap_bus_type, NULL, dev = bus_find_device(&ap_bus_type, NULL,
(void *)(long) qid, (void *)(long)qid,
__match_queue_device_with_qid); __match_queue_device_with_qid);
aq = dev ? to_ap_queue(dev) : NULL; aq = dev ? to_ap_queue(dev) : NULL;
if (!ap_test_config_usage_domain(dom)) { if (!ap_test_config_usage_domain(dom)) {
...@@ -1901,7 +1903,7 @@ static inline void ap_scan_adapter(int ap) ...@@ -1901,7 +1903,7 @@ static inline void ap_scan_adapter(int ap)
/* Is there currently a card device for this adapter ? */ /* Is there currently a card device for this adapter ? */
dev = bus_find_device(&ap_bus_type, NULL, dev = bus_find_device(&ap_bus_type, NULL,
(void *)(long) ap, (void *)(long)ap,
__match_card_device_with_id); __match_card_device_with_id);
ac = dev ? to_ap_card(dev) : NULL; ac = dev ? to_ap_card(dev) : NULL;
...@@ -2102,7 +2104,7 @@ static void ap_scan_bus(struct work_struct *unused) ...@@ -2102,7 +2104,7 @@ static void ap_scan_bus(struct work_struct *unused)
if (ap_domain_index >= 0) { if (ap_domain_index >= 0) {
struct device *dev = struct device *dev =
bus_find_device(&ap_bus_type, NULL, bus_find_device(&ap_bus_type, NULL,
(void *)(long) ap_domain_index, (void *)(long)ap_domain_index,
__match_queue_device_with_queue_id); __match_queue_device_with_queue_id);
if (dev) if (dev)
put_device(dev); put_device(dev);
...@@ -2137,7 +2139,7 @@ static int __init ap_debug_init(void) ...@@ -2137,7 +2139,7 @@ static int __init ap_debug_init(void)
static void __init ap_perms_init(void) static void __init ap_perms_init(void)
{ {
/* all resources useable if no kernel parameter string given */ /* all resources usable if no kernel parameter string given */
memset(&ap_perms.ioctlm, 0xFF, sizeof(ap_perms.ioctlm)); memset(&ap_perms.ioctlm, 0xFF, sizeof(ap_perms.ioctlm));
memset(&ap_perms.apm, 0xFF, sizeof(ap_perms.apm)); memset(&ap_perms.apm, 0xFF, sizeof(ap_perms.apm));
memset(&ap_perms.aqm, 0xFF, sizeof(ap_perms.aqm)); memset(&ap_perms.aqm, 0xFF, sizeof(ap_perms.aqm));
......
...@@ -317,6 +317,7 @@ struct ap_perms { ...@@ -317,6 +317,7 @@ struct ap_perms {
unsigned long aqm[BITS_TO_LONGS(AP_DOMAINS)]; unsigned long aqm[BITS_TO_LONGS(AP_DOMAINS)];
unsigned long adm[BITS_TO_LONGS(AP_DOMAINS)]; unsigned long adm[BITS_TO_LONGS(AP_DOMAINS)];
}; };
extern struct ap_perms ap_perms; extern struct ap_perms ap_perms;
extern struct mutex ap_perms_mutex; extern struct mutex ap_perms_mutex;
......
...@@ -99,7 +99,7 @@ int ap_recv(ap_qid_t qid, unsigned long long *psmid, void *msg, size_t length) ...@@ -99,7 +99,7 @@ int ap_recv(ap_qid_t qid, unsigned long long *psmid, void *msg, size_t length)
{ {
struct ap_queue_status status; struct ap_queue_status status;
if (msg == NULL) if (!msg)
return -EINVAL; return -EINVAL;
status = ap_dqap(qid, psmid, msg, length, NULL, NULL); status = ap_dqap(qid, psmid, msg, length, NULL, NULL);
switch (status.response_code) { switch (status.response_code) {
...@@ -603,7 +603,7 @@ static ssize_t interrupt_show(struct device *dev, ...@@ -603,7 +603,7 @@ static ssize_t interrupt_show(struct device *dev,
static DEVICE_ATTR_RO(interrupt); static DEVICE_ATTR_RO(interrupt);
static ssize_t config_show(struct device *dev, static ssize_t config_show(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct ap_queue *aq = to_ap_queue(dev); struct ap_queue *aq = to_ap_queue(dev);
int rc; int rc;
...@@ -827,8 +827,9 @@ int ap_queue_message(struct ap_queue *aq, struct ap_message *ap_msg) ...@@ -827,8 +827,9 @@ int ap_queue_message(struct ap_queue *aq, struct ap_message *ap_msg)
aq->requestq_count++; aq->requestq_count++;
aq->total_request_count++; aq->total_request_count++;
atomic64_inc(&aq->card->total_request_count); atomic64_inc(&aq->card->total_request_count);
} else } else {
rc = -ENODEV; rc = -ENODEV;
}
/* Send/receive as many request from the queue as possible. */ /* Send/receive as many request from the queue as possible. */
ap_wait(ap_sm_event_loop(aq, AP_SM_EVENT_POLL)); ap_wait(ap_sm_event_loop(aq, AP_SM_EVENT_POLL));
......
...@@ -232,7 +232,7 @@ static int pkey_ep11key2pkey(const u8 *key, struct pkey_protkey *pkey) ...@@ -232,7 +232,7 @@ static int pkey_ep11key2pkey(const u8 *key, struct pkey_protkey *pkey)
int i, rc; int i, rc;
u16 card, dom; u16 card, dom;
u32 nr_apqns, *apqns = NULL; u32 nr_apqns, *apqns = NULL;
struct ep11keyblob *kb = (struct ep11keyblob *) key; struct ep11keyblob *kb = (struct ep11keyblob *)key;
zcrypt_wait_api_operational(); zcrypt_wait_api_operational();
...@@ -267,12 +267,12 @@ static int pkey_verifykey(const struct pkey_seckey *seckey, ...@@ -267,12 +267,12 @@ static int pkey_verifykey(const struct pkey_seckey *seckey,
u16 *pcardnr, u16 *pdomain, u16 *pcardnr, u16 *pdomain,
u16 *pkeysize, u32 *pattributes) u16 *pkeysize, u32 *pattributes)
{ {
struct secaeskeytoken *t = (struct secaeskeytoken *) seckey; struct secaeskeytoken *t = (struct secaeskeytoken *)seckey;
u16 cardnr, domain; u16 cardnr, domain;
int rc; int rc;
/* check the secure key for valid AES secure key */ /* check the secure key for valid AES secure key */
rc = cca_check_secaeskeytoken(debug_info, 3, (u8 *) seckey, 0); rc = cca_check_secaeskeytoken(debug_info, 3, (u8 *)seckey, 0);
if (rc) if (rc)
goto out; goto out;
if (pattributes) if (pattributes)
...@@ -425,9 +425,9 @@ static int pkey_nonccatok2pkey(const u8 *key, u32 keylen, ...@@ -425,9 +425,9 @@ static int pkey_nonccatok2pkey(const u8 *key, u32 keylen,
t = (struct clearaeskeytoken *)key; t = (struct clearaeskeytoken *)key;
if (keylen != sizeof(*t) + t->len) if (keylen != sizeof(*t) + t->len)
goto out; goto out;
if ((t->keytype == PKEY_KEYTYPE_AES_128 && t->len == 16) if ((t->keytype == PKEY_KEYTYPE_AES_128 && t->len == 16) ||
|| (t->keytype == PKEY_KEYTYPE_AES_192 && t->len == 24) (t->keytype == PKEY_KEYTYPE_AES_192 && t->len == 24) ||
|| (t->keytype == PKEY_KEYTYPE_AES_256 && t->len == 32)) (t->keytype == PKEY_KEYTYPE_AES_256 && t->len == 32))
memcpy(ckey.clrkey, t->clearkey, t->len); memcpy(ckey.clrkey, t->clearkey, t->len);
else else
goto out; goto out;
...@@ -541,7 +541,6 @@ int pkey_keyblob2pkey(const u8 *key, u32 keylen, ...@@ -541,7 +541,6 @@ int pkey_keyblob2pkey(const u8 *key, u32 keylen,
DEBUG_DBG("%s rc=%d\n", __func__, rc); DEBUG_DBG("%s rc=%d\n", __func__, rc);
return rc; return rc;
} }
EXPORT_SYMBOL(pkey_keyblob2pkey); EXPORT_SYMBOL(pkey_keyblob2pkey);
...@@ -588,9 +587,11 @@ static int pkey_genseckey2(const struct pkey_apqn *apqns, size_t nr_apqns, ...@@ -588,9 +587,11 @@ static int pkey_genseckey2(const struct pkey_apqn *apqns, size_t nr_apqns,
} else if (ktype == PKEY_TYPE_CCA_DATA) { } else if (ktype == PKEY_TYPE_CCA_DATA) {
rc = cca_genseckey(card, dom, ksize, keybuf); rc = cca_genseckey(card, dom, ksize, keybuf);
*keybufsize = (rc ? 0 : SECKEYBLOBSIZE); *keybufsize = (rc ? 0 : SECKEYBLOBSIZE);
} else /* TOKVER_CCA_VLSC */ } else {
/* TOKVER_CCA_VLSC */
rc = cca_gencipherkey(card, dom, ksize, kflags, rc = cca_gencipherkey(card, dom, ksize, kflags,
keybuf, keybufsize); keybuf, keybufsize);
}
if (rc == 0) if (rc == 0)
break; break;
} }
...@@ -645,9 +646,11 @@ static int pkey_clr2seckey2(const struct pkey_apqn *apqns, size_t nr_apqns, ...@@ -645,9 +646,11 @@ static int pkey_clr2seckey2(const struct pkey_apqn *apqns, size_t nr_apqns,
rc = cca_clr2seckey(card, dom, ksize, rc = cca_clr2seckey(card, dom, ksize,
clrkey, keybuf); clrkey, keybuf);
*keybufsize = (rc ? 0 : SECKEYBLOBSIZE); *keybufsize = (rc ? 0 : SECKEYBLOBSIZE);
} else /* TOKVER_CCA_VLSC */ } else {
/* TOKVER_CCA_VLSC */
rc = cca_clr2cipherkey(card, dom, ksize, kflags, rc = cca_clr2cipherkey(card, dom, ksize, kflags,
clrkey, keybuf, keybufsize); clrkey, keybuf, keybufsize);
}
if (rc == 0) if (rc == 0)
break; break;
} }
...@@ -667,8 +670,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen, ...@@ -667,8 +670,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
if (keylen < sizeof(struct keytoken_header)) if (keylen < sizeof(struct keytoken_header))
return -EINVAL; return -EINVAL;
if (hdr->type == TOKTYPE_CCA_INTERNAL if (hdr->type == TOKTYPE_CCA_INTERNAL &&
&& hdr->version == TOKVER_CCA_AES) { hdr->version == TOKVER_CCA_AES) {
struct secaeskeytoken *t = (struct secaeskeytoken *)key; struct secaeskeytoken *t = (struct secaeskeytoken *)key;
rc = cca_check_secaeskeytoken(debug_info, 3, key, 0); rc = cca_check_secaeskeytoken(debug_info, 3, key, 0);
...@@ -677,7 +680,7 @@ static int pkey_verifykey2(const u8 *key, size_t keylen, ...@@ -677,7 +680,7 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
if (ktype) if (ktype)
*ktype = PKEY_TYPE_CCA_DATA; *ktype = PKEY_TYPE_CCA_DATA;
if (ksize) if (ksize)
*ksize = (enum pkey_key_size) t->bitsize; *ksize = (enum pkey_key_size)t->bitsize;
rc = cca_findcard2(&_apqns, &_nr_apqns, *cardnr, *domain, rc = cca_findcard2(&_apqns, &_nr_apqns, *cardnr, *domain,
ZCRYPT_CEX3C, AES_MK_SET, t->mkvp, 0, 1); ZCRYPT_CEX3C, AES_MK_SET, t->mkvp, 0, 1);
...@@ -697,8 +700,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen, ...@@ -697,8 +700,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
*cardnr = ((struct pkey_apqn *)_apqns)->card; *cardnr = ((struct pkey_apqn *)_apqns)->card;
*domain = ((struct pkey_apqn *)_apqns)->domain; *domain = ((struct pkey_apqn *)_apqns)->domain;
} else if (hdr->type == TOKTYPE_CCA_INTERNAL } else if (hdr->type == TOKTYPE_CCA_INTERNAL &&
&& hdr->version == TOKVER_CCA_VLSC) { hdr->version == TOKVER_CCA_VLSC) {
struct cipherkeytoken *t = (struct cipherkeytoken *)key; struct cipherkeytoken *t = (struct cipherkeytoken *)key;
rc = cca_check_secaescipherkey(debug_info, 3, key, 0, 1); rc = cca_check_secaescipherkey(debug_info, 3, key, 0, 1);
...@@ -734,8 +737,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen, ...@@ -734,8 +737,8 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
*cardnr = ((struct pkey_apqn *)_apqns)->card; *cardnr = ((struct pkey_apqn *)_apqns)->card;
*domain = ((struct pkey_apqn *)_apqns)->domain; *domain = ((struct pkey_apqn *)_apqns)->domain;
} else if (hdr->type == TOKTYPE_NON_CCA } else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES) { hdr->version == TOKVER_EP11_AES) {
struct ep11keyblob *kb = (struct ep11keyblob *)key; struct ep11keyblob *kb = (struct ep11keyblob *)key;
rc = ep11_check_aes_key(debug_info, 3, key, keylen, 1); rc = ep11_check_aes_key(debug_info, 3, key, keylen, 1);
...@@ -757,8 +760,9 @@ static int pkey_verifykey2(const u8 *key, size_t keylen, ...@@ -757,8 +760,9 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
*cardnr = ((struct pkey_apqn *)_apqns)->card; *cardnr = ((struct pkey_apqn *)_apqns)->card;
*domain = ((struct pkey_apqn *)_apqns)->domain; *domain = ((struct pkey_apqn *)_apqns)->domain;
} else } else {
rc = -EINVAL; rc = -EINVAL;
}
out: out:
kfree(_apqns); kfree(_apqns);
...@@ -816,16 +820,17 @@ static int pkey_keyblob2pkey2(const struct pkey_apqn *apqns, size_t nr_apqns, ...@@ -816,16 +820,17 @@ static int pkey_keyblob2pkey2(const struct pkey_apqn *apqns, size_t nr_apqns,
for (i = 0, rc = -ENODEV; i < nr_apqns; i++) { for (i = 0, rc = -ENODEV; i < nr_apqns; i++) {
card = apqns[i].card; card = apqns[i].card;
dom = apqns[i].domain; dom = apqns[i].domain;
if (hdr->type == TOKTYPE_CCA_INTERNAL if (hdr->type == TOKTYPE_CCA_INTERNAL &&
&& hdr->version == TOKVER_CCA_AES) hdr->version == TOKVER_CCA_AES) {
rc = cca_sec2protkey(card, dom, key, pkey->protkey, rc = cca_sec2protkey(card, dom, key, pkey->protkey,
&pkey->len, &pkey->type); &pkey->len, &pkey->type);
else if (hdr->type == TOKTYPE_CCA_INTERNAL } else if (hdr->type == TOKTYPE_CCA_INTERNAL &&
&& hdr->version == TOKVER_CCA_VLSC) hdr->version == TOKVER_CCA_VLSC) {
rc = cca_cipher2protkey(card, dom, key, pkey->protkey, rc = cca_cipher2protkey(card, dom, key, pkey->protkey,
&pkey->len, &pkey->type); &pkey->len, &pkey->type);
else { /* EP11 AES secure key blob */ } else {
struct ep11keyblob *kb = (struct ep11keyblob *) key; /* EP11 AES secure key blob */
struct ep11keyblob *kb = (struct ep11keyblob *)key;
pkey->len = sizeof(pkey->protkey); pkey->len = sizeof(pkey->protkey);
rc = ep11_kblob2protkey(card, dom, key, kb->head.len, rc = ep11_kblob2protkey(card, dom, key, kb->head.len,
...@@ -851,10 +856,10 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags, ...@@ -851,10 +856,10 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags,
zcrypt_wait_api_operational(); zcrypt_wait_api_operational();
if (hdr->type == TOKTYPE_NON_CCA if (hdr->type == TOKTYPE_NON_CCA &&
&& (hdr->version == TOKVER_EP11_AES_WITH_HEADER (hdr->version == TOKVER_EP11_AES_WITH_HEADER ||
|| hdr->version == TOKVER_EP11_ECC_WITH_HEADER) hdr->version == TOKVER_EP11_ECC_WITH_HEADER) &&
&& is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) { is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) {
int minhwtype = 0, api = 0; int minhwtype = 0, api = 0;
struct ep11keyblob *kb = (struct ep11keyblob *) struct ep11keyblob *kb = (struct ep11keyblob *)
(key + sizeof(struct ep11kblob_header)); (key + sizeof(struct ep11kblob_header));
...@@ -869,11 +874,11 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags, ...@@ -869,11 +874,11 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags,
minhwtype, api, kb->wkvp); minhwtype, api, kb->wkvp);
if (rc) if (rc)
goto out; goto out;
} else if (hdr->type == TOKTYPE_NON_CCA } else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES hdr->version == TOKVER_EP11_AES &&
&& is_ep11_keyblob(key)) { is_ep11_keyblob(key)) {
int minhwtype = 0, api = 0; int minhwtype = 0, api = 0;
struct ep11keyblob *kb = (struct ep11keyblob *) key; struct ep11keyblob *kb = (struct ep11keyblob *)key;
if (flags != PKEY_FLAGS_MATCH_CUR_MKVP) if (flags != PKEY_FLAGS_MATCH_CUR_MKVP)
return -EINVAL; return -EINVAL;
...@@ -931,8 +936,9 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags, ...@@ -931,8 +936,9 @@ static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags,
cur_mkvp, old_mkvp, 1); cur_mkvp, old_mkvp, 1);
if (rc) if (rc)
goto out; goto out;
} else } else {
return -EINVAL; return -EINVAL;
}
if (apqns) { if (apqns) {
if (*nr_apqns < _nr_apqns) if (*nr_apqns < _nr_apqns)
...@@ -961,9 +967,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype, ...@@ -961,9 +967,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype,
int minhwtype = ZCRYPT_CEX3C; int minhwtype = ZCRYPT_CEX3C;
if (flags & PKEY_FLAGS_MATCH_CUR_MKVP) if (flags & PKEY_FLAGS_MATCH_CUR_MKVP)
cur_mkvp = *((u64 *) cur_mkvp); cur_mkvp = *((u64 *)cur_mkvp);
if (flags & PKEY_FLAGS_MATCH_ALT_MKVP) if (flags & PKEY_FLAGS_MATCH_ALT_MKVP)
old_mkvp = *((u64 *) alt_mkvp); old_mkvp = *((u64 *)alt_mkvp);
if (ktype == PKEY_TYPE_CCA_CIPHER) if (ktype == PKEY_TYPE_CCA_CIPHER)
minhwtype = ZCRYPT_CEX6; minhwtype = ZCRYPT_CEX6;
rc = cca_findcard2(&_apqns, &_nr_apqns, 0xFFFF, 0xFFFF, rc = cca_findcard2(&_apqns, &_nr_apqns, 0xFFFF, 0xFFFF,
...@@ -975,9 +981,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype, ...@@ -975,9 +981,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype,
u64 cur_mkvp = 0, old_mkvp = 0; u64 cur_mkvp = 0, old_mkvp = 0;
if (flags & PKEY_FLAGS_MATCH_CUR_MKVP) if (flags & PKEY_FLAGS_MATCH_CUR_MKVP)
cur_mkvp = *((u64 *) cur_mkvp); cur_mkvp = *((u64 *)cur_mkvp);
if (flags & PKEY_FLAGS_MATCH_ALT_MKVP) if (flags & PKEY_FLAGS_MATCH_ALT_MKVP)
old_mkvp = *((u64 *) alt_mkvp); old_mkvp = *((u64 *)alt_mkvp);
rc = cca_findcard2(&_apqns, &_nr_apqns, 0xFFFF, 0xFFFF, rc = cca_findcard2(&_apqns, &_nr_apqns, 0xFFFF, 0xFFFF,
ZCRYPT_CEX7, APKA_MK_SET, ZCRYPT_CEX7, APKA_MK_SET,
cur_mkvp, old_mkvp, 1); cur_mkvp, old_mkvp, 1);
...@@ -996,8 +1002,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype, ...@@ -996,8 +1002,9 @@ static int pkey_apqns4keytype(enum pkey_key_type ktype,
if (rc) if (rc)
goto out; goto out;
} else } else {
return -EINVAL; return -EINVAL;
}
if (apqns) { if (apqns) {
if (*nr_apqns < _nr_apqns) if (*nr_apqns < _nr_apqns)
...@@ -1026,21 +1033,21 @@ static int pkey_keyblob2pkey3(const struct pkey_apqn *apqns, size_t nr_apqns, ...@@ -1026,21 +1033,21 @@ static int pkey_keyblob2pkey3(const struct pkey_apqn *apqns, size_t nr_apqns,
if (keylen < sizeof(struct keytoken_header)) if (keylen < sizeof(struct keytoken_header))
return -EINVAL; return -EINVAL;
if (hdr->type == TOKTYPE_NON_CCA if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES_WITH_HEADER hdr->version == TOKVER_EP11_AES_WITH_HEADER &&
&& is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) { is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) {
/* EP11 AES key blob with header */ /* EP11 AES key blob with header */
if (ep11_check_aes_key_with_hdr(debug_info, 3, key, keylen, 1)) if (ep11_check_aes_key_with_hdr(debug_info, 3, key, keylen, 1))
return -EINVAL; return -EINVAL;
} else if (hdr->type == TOKTYPE_NON_CCA } else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_ECC_WITH_HEADER hdr->version == TOKVER_EP11_ECC_WITH_HEADER &&
&& is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) { is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) {
/* EP11 ECC key blob with header */ /* EP11 ECC key blob with header */
if (ep11_check_ecc_key_with_hdr(debug_info, 3, key, keylen, 1)) if (ep11_check_ecc_key_with_hdr(debug_info, 3, key, keylen, 1))
return -EINVAL; return -EINVAL;
} else if (hdr->type == TOKTYPE_NON_CCA } else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES hdr->version == TOKVER_EP11_AES &&
&& is_ep11_keyblob(key)) { is_ep11_keyblob(key)) {
/* EP11 AES key blob with header in session field */ /* EP11 AES key blob with header in session field */
if (ep11_check_aes_key(debug_info, 3, key, keylen, 1)) if (ep11_check_aes_key(debug_info, 3, key, keylen, 1))
return -EINVAL; return -EINVAL;
...@@ -1088,15 +1095,15 @@ static int pkey_keyblob2pkey3(const struct pkey_apqn *apqns, size_t nr_apqns, ...@@ -1088,15 +1095,15 @@ static int pkey_keyblob2pkey3(const struct pkey_apqn *apqns, size_t nr_apqns,
for (rc = -ENODEV, i = 0; rc && i < nr_apqns; i++) { for (rc = -ENODEV, i = 0; rc && i < nr_apqns; i++) {
card = apqns[i].card; card = apqns[i].card;
dom = apqns[i].domain; dom = apqns[i].domain;
if (hdr->type == TOKTYPE_NON_CCA if (hdr->type == TOKTYPE_NON_CCA &&
&& (hdr->version == TOKVER_EP11_AES_WITH_HEADER (hdr->version == TOKVER_EP11_AES_WITH_HEADER ||
|| hdr->version == TOKVER_EP11_ECC_WITH_HEADER) hdr->version == TOKVER_EP11_ECC_WITH_HEADER) &&
&& is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) is_ep11_keyblob(key + sizeof(struct ep11kblob_header)))
rc = ep11_kblob2protkey(card, dom, key, hdr->len, rc = ep11_kblob2protkey(card, dom, key, hdr->len,
protkey, protkeylen, protkeytype); protkey, protkeylen, protkeytype);
else if (hdr->type == TOKTYPE_NON_CCA else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES hdr->version == TOKVER_EP11_AES &&
&& is_ep11_keyblob(key)) is_ep11_keyblob(key))
rc = ep11_kblob2protkey(card, dom, key, hdr->len, rc = ep11_kblob2protkey(card, dom, key, hdr->len,
protkey, protkeylen, protkeytype); protkey, protkeylen, protkeytype);
else if (hdr->type == TOKTYPE_CCA_INTERNAL && else if (hdr->type == TOKTYPE_CCA_INTERNAL &&
...@@ -1144,7 +1151,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1144,7 +1151,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
switch (cmd) { switch (cmd) {
case PKEY_GENSECK: { case PKEY_GENSECK: {
struct pkey_genseck __user *ugs = (void __user *) arg; struct pkey_genseck __user *ugs = (void __user *)arg;
struct pkey_genseck kgs; struct pkey_genseck kgs;
if (copy_from_user(&kgs, ugs, sizeof(kgs))) if (copy_from_user(&kgs, ugs, sizeof(kgs)))
...@@ -1159,7 +1166,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1159,7 +1166,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_CLR2SECK: { case PKEY_CLR2SECK: {
struct pkey_clr2seck __user *ucs = (void __user *) arg; struct pkey_clr2seck __user *ucs = (void __user *)arg;
struct pkey_clr2seck kcs; struct pkey_clr2seck kcs;
if (copy_from_user(&kcs, ucs, sizeof(kcs))) if (copy_from_user(&kcs, ucs, sizeof(kcs)))
...@@ -1175,7 +1182,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1175,7 +1182,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_SEC2PROTK: { case PKEY_SEC2PROTK: {
struct pkey_sec2protk __user *usp = (void __user *) arg; struct pkey_sec2protk __user *usp = (void __user *)arg;
struct pkey_sec2protk ksp; struct pkey_sec2protk ksp;
if (copy_from_user(&ksp, usp, sizeof(ksp))) if (copy_from_user(&ksp, usp, sizeof(ksp)))
...@@ -1191,7 +1198,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1191,7 +1198,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_CLR2PROTK: { case PKEY_CLR2PROTK: {
struct pkey_clr2protk __user *ucp = (void __user *) arg; struct pkey_clr2protk __user *ucp = (void __user *)arg;
struct pkey_clr2protk kcp; struct pkey_clr2protk kcp;
if (copy_from_user(&kcp, ucp, sizeof(kcp))) if (copy_from_user(&kcp, ucp, sizeof(kcp)))
...@@ -1207,7 +1214,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1207,7 +1214,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_FINDCARD: { case PKEY_FINDCARD: {
struct pkey_findcard __user *ufc = (void __user *) arg; struct pkey_findcard __user *ufc = (void __user *)arg;
struct pkey_findcard kfc; struct pkey_findcard kfc;
if (copy_from_user(&kfc, ufc, sizeof(kfc))) if (copy_from_user(&kfc, ufc, sizeof(kfc)))
...@@ -1222,7 +1229,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1222,7 +1229,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_SKEY2PKEY: { case PKEY_SKEY2PKEY: {
struct pkey_skey2pkey __user *usp = (void __user *) arg; struct pkey_skey2pkey __user *usp = (void __user *)arg;
struct pkey_skey2pkey ksp; struct pkey_skey2pkey ksp;
if (copy_from_user(&ksp, usp, sizeof(ksp))) if (copy_from_user(&ksp, usp, sizeof(ksp)))
...@@ -1236,7 +1243,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1236,7 +1243,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_VERIFYKEY: { case PKEY_VERIFYKEY: {
struct pkey_verifykey __user *uvk = (void __user *) arg; struct pkey_verifykey __user *uvk = (void __user *)arg;
struct pkey_verifykey kvk; struct pkey_verifykey kvk;
if (copy_from_user(&kvk, uvk, sizeof(kvk))) if (copy_from_user(&kvk, uvk, sizeof(kvk)))
...@@ -1251,7 +1258,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1251,7 +1258,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_GENPROTK: { case PKEY_GENPROTK: {
struct pkey_genprotk __user *ugp = (void __user *) arg; struct pkey_genprotk __user *ugp = (void __user *)arg;
struct pkey_genprotk kgp; struct pkey_genprotk kgp;
if (copy_from_user(&kgp, ugp, sizeof(kgp))) if (copy_from_user(&kgp, ugp, sizeof(kgp)))
...@@ -1265,7 +1272,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1265,7 +1272,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_VERIFYPROTK: { case PKEY_VERIFYPROTK: {
struct pkey_verifyprotk __user *uvp = (void __user *) arg; struct pkey_verifyprotk __user *uvp = (void __user *)arg;
struct pkey_verifyprotk kvp; struct pkey_verifyprotk kvp;
if (copy_from_user(&kvp, uvp, sizeof(kvp))) if (copy_from_user(&kvp, uvp, sizeof(kvp)))
...@@ -1275,7 +1282,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1275,7 +1282,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_KBLOB2PROTK: { case PKEY_KBLOB2PROTK: {
struct pkey_kblob2pkey __user *utp = (void __user *) arg; struct pkey_kblob2pkey __user *utp = (void __user *)arg;
struct pkey_kblob2pkey ktp; struct pkey_kblob2pkey ktp;
u8 *kkey; u8 *kkey;
...@@ -1294,7 +1301,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1294,7 +1301,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_GENSECK2: { case PKEY_GENSECK2: {
struct pkey_genseck2 __user *ugs = (void __user *) arg; struct pkey_genseck2 __user *ugs = (void __user *)arg;
struct pkey_genseck2 kgs; struct pkey_genseck2 kgs;
struct pkey_apqn *apqns; struct pkey_apqn *apqns;
size_t klen = KEYBLOBBUFSIZE; size_t klen = KEYBLOBBUFSIZE;
...@@ -1336,7 +1343,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1336,7 +1343,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_CLR2SECK2: { case PKEY_CLR2SECK2: {
struct pkey_clr2seck2 __user *ucs = (void __user *) arg; struct pkey_clr2seck2 __user *ucs = (void __user *)arg;
struct pkey_clr2seck2 kcs; struct pkey_clr2seck2 kcs;
struct pkey_apqn *apqns; struct pkey_apqn *apqns;
size_t klen = KEYBLOBBUFSIZE; size_t klen = KEYBLOBBUFSIZE;
...@@ -1379,7 +1386,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1379,7 +1386,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_VERIFYKEY2: { case PKEY_VERIFYKEY2: {
struct pkey_verifykey2 __user *uvk = (void __user *) arg; struct pkey_verifykey2 __user *uvk = (void __user *)arg;
struct pkey_verifykey2 kvk; struct pkey_verifykey2 kvk;
u8 *kkey; u8 *kkey;
...@@ -1400,7 +1407,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1400,7 +1407,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_KBLOB2PROTK2: { case PKEY_KBLOB2PROTK2: {
struct pkey_kblob2pkey2 __user *utp = (void __user *) arg; struct pkey_kblob2pkey2 __user *utp = (void __user *)arg;
struct pkey_kblob2pkey2 ktp; struct pkey_kblob2pkey2 ktp;
struct pkey_apqn *apqns = NULL; struct pkey_apqn *apqns = NULL;
u8 *kkey; u8 *kkey;
...@@ -1427,7 +1434,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1427,7 +1434,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_APQNS4K: { case PKEY_APQNS4K: {
struct pkey_apqns4key __user *uak = (void __user *) arg; struct pkey_apqns4key __user *uak = (void __user *)arg;
struct pkey_apqns4key kak; struct pkey_apqns4key kak;
struct pkey_apqn *apqns = NULL; struct pkey_apqn *apqns = NULL;
size_t nr_apqns, len; size_t nr_apqns, len;
...@@ -1476,7 +1483,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1476,7 +1483,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_APQNS4KT: { case PKEY_APQNS4KT: {
struct pkey_apqns4keytype __user *uat = (void __user *) arg; struct pkey_apqns4keytype __user *uat = (void __user *)arg;
struct pkey_apqns4keytype kat; struct pkey_apqns4keytype kat;
struct pkey_apqn *apqns = NULL; struct pkey_apqn *apqns = NULL;
size_t nr_apqns, len; size_t nr_apqns, len;
...@@ -1518,7 +1525,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1518,7 +1525,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
break; break;
} }
case PKEY_KBLOB2PROTK3: { case PKEY_KBLOB2PROTK3: {
struct pkey_kblob2pkey3 __user *utp = (void __user *) arg; struct pkey_kblob2pkey3 __user *utp = (void __user *)arg;
struct pkey_kblob2pkey3 ktp; struct pkey_kblob2pkey3 ktp;
struct pkey_apqn *apqns = NULL; struct pkey_apqn *apqns = NULL;
u32 protkeylen = PROTKEYBLOBBUFSIZE; u32 protkeylen = PROTKEYBLOBBUFSIZE;
...@@ -1708,7 +1715,7 @@ static ssize_t pkey_ccadata_aes_attr_read(u32 keytype, bool is_xts, char *buf, ...@@ -1708,7 +1715,7 @@ static ssize_t pkey_ccadata_aes_attr_read(u32 keytype, bool is_xts, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
int rc; int rc;
struct pkey_seckey *seckey = (struct pkey_seckey *) buf; struct pkey_seckey *seckey = (struct pkey_seckey *)buf;
if (off != 0 || count < sizeof(struct secaeskeytoken)) if (off != 0 || count < sizeof(struct secaeskeytoken))
return -EINVAL; return -EINVAL;
......
...@@ -104,7 +104,7 @@ struct zcrypt_ops *zcrypt_msgtype(unsigned char *name, int variant) ...@@ -104,7 +104,7 @@ struct zcrypt_ops *zcrypt_msgtype(unsigned char *name, int variant)
struct zcrypt_ops *zops; struct zcrypt_ops *zops;
list_for_each_entry(zops, &zcrypt_ops_list, list) list_for_each_entry(zops, &zcrypt_ops_list, list)
if ((zops->variant == variant) && if (zops->variant == variant &&
(!strncmp(zops->name, name, sizeof(zops->name)))) (!strncmp(zops->name, name, sizeof(zops->name))))
return zops; return zops;
return NULL; return NULL;
...@@ -438,8 +438,8 @@ static int zcdn_create(const char *name) ...@@ -438,8 +438,8 @@ static int zcdn_create(const char *name)
strncpy(nodename, name, sizeof(nodename)); strncpy(nodename, name, sizeof(nodename));
else else
snprintf(nodename, sizeof(nodename), snprintf(nodename, sizeof(nodename),
ZCRYPT_NAME "_%d", (int) MINOR(devt)); ZCRYPT_NAME "_%d", (int)MINOR(devt));
nodename[sizeof(nodename)-1] = '\0'; nodename[sizeof(nodename) - 1] = '\0';
if (dev_set_name(&zcdndev->device, nodename)) { if (dev_set_name(&zcdndev->device, nodename)) {
rc = -EINVAL; rc = -EINVAL;
goto unlockout; goto unlockout;
...@@ -519,7 +519,7 @@ static ssize_t zcrypt_read(struct file *filp, char __user *buf, ...@@ -519,7 +519,7 @@ static ssize_t zcrypt_read(struct file *filp, char __user *buf,
/* /*
* zcrypt_write(): Not allowed. * zcrypt_write(): Not allowed.
* *
* Write is is not allowed * Write is not allowed
*/ */
static ssize_t zcrypt_write(struct file *filp, const char __user *buf, static ssize_t zcrypt_write(struct file *filp, const char __user *buf,
size_t count, loff_t *f_pos) size_t count, loff_t *f_pos)
...@@ -549,7 +549,7 @@ static int zcrypt_open(struct inode *inode, struct file *filp) ...@@ -549,7 +549,7 @@ static int zcrypt_open(struct inode *inode, struct file *filp)
perms = &zcdndev->perms; perms = &zcdndev->perms;
} }
#endif #endif
filp->private_data = (void *) perms; filp->private_data = (void *)perms;
atomic_inc(&zcrypt_open_count); atomic_inc(&zcrypt_open_count);
return stream_open(inode, filp); return stream_open(inode, filp);
...@@ -713,7 +713,7 @@ static long zcrypt_rsa_modexpo(struct ap_perms *perms, ...@@ -713,7 +713,7 @@ static long zcrypt_rsa_modexpo(struct ap_perms *perms,
pref_zq = NULL; pref_zq = NULL;
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
/* Check for useable accelarator or CCA card */ /* Check for usable accelarator or CCA card */
if (!zc->online || !zc->card->config || zc->card->chkstop || if (!zc->online || !zc->card->config || zc->card->chkstop ||
!(zc->card->functions & 0x18000000)) !(zc->card->functions & 0x18000000))
continue; continue;
...@@ -733,7 +733,7 @@ static long zcrypt_rsa_modexpo(struct ap_perms *perms, ...@@ -733,7 +733,7 @@ static long zcrypt_rsa_modexpo(struct ap_perms *perms,
if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt)) if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt))
continue; continue;
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
/* check if device is useable and eligible */ /* check if device is usable and eligible */
if (!zq->online || !zq->ops->rsa_modexpo || if (!zq->online || !zq->ops->rsa_modexpo ||
!zq->queue->config || zq->queue->chkstop) !zq->queue->config || zq->queue->chkstop)
continue; continue;
...@@ -823,7 +823,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms, ...@@ -823,7 +823,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms,
pref_zq = NULL; pref_zq = NULL;
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
/* Check for useable accelarator or CCA card */ /* Check for usable accelarator or CCA card */
if (!zc->online || !zc->card->config || zc->card->chkstop || if (!zc->online || !zc->card->config || zc->card->chkstop ||
!(zc->card->functions & 0x18000000)) !(zc->card->functions & 0x18000000))
continue; continue;
...@@ -843,7 +843,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms, ...@@ -843,7 +843,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms,
if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt)) if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt))
continue; continue;
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
/* check if device is useable and eligible */ /* check if device is usable and eligible */
if (!zq->online || !zq->ops->rsa_modexpo_crt || if (!zq->online || !zq->ops->rsa_modexpo_crt ||
!zq->queue->config || zq->queue->chkstop) !zq->queue->config || zq->queue->chkstop)
continue; continue;
...@@ -893,7 +893,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms, ...@@ -893,7 +893,7 @@ static long zcrypt_rsa_crt(struct ap_perms *perms,
static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
struct zcrypt_track *tr, struct zcrypt_track *tr,
struct ica_xcRB *xcRB) struct ica_xcRB *xcrb)
{ {
struct zcrypt_card *zc, *pref_zc; struct zcrypt_card *zc, *pref_zc;
struct zcrypt_queue *zq, *pref_zq; struct zcrypt_queue *zq, *pref_zq;
...@@ -904,9 +904,9 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -904,9 +904,9 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
int cpen, qpen, qid = 0, rc = -ENODEV; int cpen, qpen, qid = 0, rc = -ENODEV;
struct module *mod; struct module *mod;
trace_s390_zcrypt_req(xcRB, TB_ZSECSENDCPRB); trace_s390_zcrypt_req(xcrb, TB_ZSECSENDCPRB);
xcRB->status = 0; xcrb->status = 0;
ap_init_message(&ap_msg); ap_init_message(&ap_msg);
#ifdef CONFIG_ZCRYPT_DEBUG #ifdef CONFIG_ZCRYPT_DEBUG
...@@ -915,11 +915,11 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -915,11 +915,11 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
if (tr && tr->fi.action == AP_FI_ACTION_CCA_AGENT_FF) { if (tr && tr->fi.action == AP_FI_ACTION_CCA_AGENT_FF) {
ZCRYPT_DBF_WARN("%s fi cmd 0x%04x: forcing invalid agent_ID 'FF'\n", ZCRYPT_DBF_WARN("%s fi cmd 0x%04x: forcing invalid agent_ID 'FF'\n",
__func__, tr->fi.cmd); __func__, tr->fi.cmd);
xcRB->agent_ID = 0x4646; xcrb->agent_ID = 0x4646;
} }
#endif #endif
rc = prep_cca_ap_msg(userspace, xcRB, &ap_msg, &func_code, &domain); rc = prep_cca_ap_msg(userspace, xcrb, &ap_msg, &func_code, &domain);
if (rc) if (rc)
goto out; goto out;
...@@ -948,13 +948,13 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -948,13 +948,13 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
pref_zq = NULL; pref_zq = NULL;
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
/* Check for useable CCA card */ /* Check for usable CCA card */
if (!zc->online || !zc->card->config || zc->card->chkstop || if (!zc->online || !zc->card->config || zc->card->chkstop ||
!(zc->card->functions & 0x10000000)) !(zc->card->functions & 0x10000000))
continue; continue;
/* Check for user selected CCA card */ /* Check for user selected CCA card */
if (xcRB->user_defined != AUTOSELECT && if (xcrb->user_defined != AUTOSELECT &&
xcRB->user_defined != zc->card->id) xcrb->user_defined != zc->card->id)
continue; continue;
/* check if request size exceeds card max msg size */ /* check if request size exceeds card max msg size */
if (ap_msg.len > zc->card->maxmsgsize) if (ap_msg.len > zc->card->maxmsgsize)
...@@ -971,7 +971,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -971,7 +971,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt)) if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt))
continue; continue;
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
/* check for device useable and eligible */ /* check for device usable and eligible */
if (!zq->online || !zq->ops->send_cprb || if (!zq->online || !zq->ops->send_cprb ||
!zq->queue->config || zq->queue->chkstop || !zq->queue->config || zq->queue->chkstop ||
(tdom != AUTOSEL_DOM && (tdom != AUTOSEL_DOM &&
...@@ -998,7 +998,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -998,7 +998,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
if (!pref_zq) { if (!pref_zq) {
ZCRYPT_DBF_DBG("%s no match for address %02x.%04x => ENODEV\n", ZCRYPT_DBF_DBG("%s no match for address %02x.%04x => ENODEV\n",
__func__, xcRB->user_defined, *domain); __func__, xcrb->user_defined, *domain);
rc = -ENODEV; rc = -ENODEV;
goto out; goto out;
} }
...@@ -1016,7 +1016,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -1016,7 +1016,7 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
} }
#endif #endif
rc = pref_zq->ops->send_cprb(userspace, pref_zq, xcRB, &ap_msg); rc = pref_zq->ops->send_cprb(userspace, pref_zq, xcrb, &ap_msg);
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
zcrypt_drop_queue(pref_zc, pref_zq, mod, wgt); zcrypt_drop_queue(pref_zc, pref_zq, mod, wgt);
...@@ -1028,14 +1028,14 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms, ...@@ -1028,14 +1028,14 @@ static long _zcrypt_send_cprb(bool userspace, struct ap_perms *perms,
tr->last_rc = rc; tr->last_rc = rc;
tr->last_qid = qid; tr->last_qid = qid;
} }
trace_s390_zcrypt_rep(xcRB, func_code, rc, trace_s390_zcrypt_rep(xcrb, func_code, rc,
AP_QID_CARD(qid), AP_QID_QUEUE(qid)); AP_QID_CARD(qid), AP_QID_QUEUE(qid));
return rc; return rc;
} }
long zcrypt_send_cprb(struct ica_xcRB *xcRB) long zcrypt_send_cprb(struct ica_xcRB *xcrb)
{ {
return _zcrypt_send_cprb(false, &ap_perms, NULL, xcRB); return _zcrypt_send_cprb(false, &ap_perms, NULL, xcrb);
} }
EXPORT_SYMBOL(zcrypt_send_cprb); EXPORT_SYMBOL(zcrypt_send_cprb);
...@@ -1089,7 +1089,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms, ...@@ -1089,7 +1089,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
ap_msg.fi.cmd = tr->fi.cmd; ap_msg.fi.cmd = tr->fi.cmd;
#endif #endif
target_num = (unsigned short) xcrb->targets_num; target_num = (unsigned short)xcrb->targets_num;
/* empty list indicates autoselect (all available targets) */ /* empty list indicates autoselect (all available targets) */
targets = NULL; targets = NULL;
...@@ -1103,9 +1103,9 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms, ...@@ -1103,9 +1103,9 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
goto out; goto out;
} }
uptr = (struct ep11_target_dev __force __user *) xcrb->targets; uptr = (struct ep11_target_dev __force __user *)xcrb->targets;
if (z_copy_from_user(userspace, targets, uptr, if (z_copy_from_user(userspace, targets, uptr,
target_num * sizeof(*targets))) { target_num * sizeof(*targets))) {
func_code = 0; func_code = 0;
rc = -EFAULT; rc = -EFAULT;
goto out_free; goto out_free;
...@@ -1132,7 +1132,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms, ...@@ -1132,7 +1132,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
pref_zq = NULL; pref_zq = NULL;
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
/* Check for useable EP11 card */ /* Check for usable EP11 card */
if (!zc->online || !zc->card->config || zc->card->chkstop || if (!zc->online || !zc->card->config || zc->card->chkstop ||
!(zc->card->functions & 0x04000000)) !(zc->card->functions & 0x04000000))
continue; continue;
...@@ -1155,7 +1155,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms, ...@@ -1155,7 +1155,7 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt)) if (!zcrypt_card_compare(zc, pref_zc, wgt + cpen, pref_wgt))
continue; continue;
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
/* check if device is useable and eligible */ /* check if device is usable and eligible */
if (!zq->online || !zq->ops->send_ep11_cprb || if (!zq->online || !zq->ops->send_ep11_cprb ||
!zq->queue->config || zq->queue->chkstop || !zq->queue->config || zq->queue->chkstop ||
(targets && (targets &&
...@@ -1184,11 +1184,11 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms, ...@@ -1184,11 +1184,11 @@ static long _zcrypt_send_ep11_cprb(bool userspace, struct ap_perms *perms,
if (!pref_zq) { if (!pref_zq) {
if (targets && target_num == 1) { if (targets && target_num == 1) {
ZCRYPT_DBF_DBG("%s no match for address %02x.%04x => ENODEV\n", ZCRYPT_DBF_DBG("%s no match for address %02x.%04x => ENODEV\n",
__func__, (int) targets->ap_id, __func__, (int)targets->ap_id,
(int) targets->dom_id); (int)targets->dom_id);
} else if (targets) { } else if (targets) {
ZCRYPT_DBF_DBG("%s no match for %d target addrs => ENODEV\n", ZCRYPT_DBF_DBG("%s no match for %d target addrs => ENODEV\n",
__func__, (int) target_num); __func__, (int)target_num);
} else { } else {
ZCRYPT_DBF_DBG("%s no match for address ff.ffff => ENODEV\n", ZCRYPT_DBF_DBG("%s no match for address ff.ffff => ENODEV\n",
__func__); __func__);
...@@ -1245,7 +1245,7 @@ static long zcrypt_rng(char *buffer) ...@@ -1245,7 +1245,7 @@ static long zcrypt_rng(char *buffer)
pref_zq = NULL; pref_zq = NULL;
spin_lock(&zcrypt_list_lock); spin_lock(&zcrypt_list_lock);
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
/* Check for useable CCA card */ /* Check for usable CCA card */
if (!zc->online || !zc->card->config || zc->card->chkstop || if (!zc->online || !zc->card->config || zc->card->chkstop ||
!(zc->card->functions & 0x10000000)) !(zc->card->functions & 0x10000000))
continue; continue;
...@@ -1254,7 +1254,7 @@ static long zcrypt_rng(char *buffer) ...@@ -1254,7 +1254,7 @@ static long zcrypt_rng(char *buffer)
if (!zcrypt_card_compare(zc, pref_zc, wgt, pref_wgt)) if (!zcrypt_card_compare(zc, pref_zc, wgt, pref_wgt))
continue; continue;
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
/* check if device is useable and eligible */ /* check if device is usable and eligible */
if (!zq->online || !zq->ops->rng || if (!zq->online || !zq->ops->rng ||
!zq->queue->config || zq->queue->chkstop) !zq->queue->config || zq->queue->chkstop)
continue; continue;
...@@ -1270,7 +1270,7 @@ static long zcrypt_rng(char *buffer) ...@@ -1270,7 +1270,7 @@ static long zcrypt_rng(char *buffer)
if (!pref_zq) { if (!pref_zq) {
ZCRYPT_DBF_DBG("%s no matching queue found => ENODEV\n", ZCRYPT_DBF_DBG("%s no matching queue found => ENODEV\n",
__func__); __func__);
rc = -ENODEV; rc = -ENODEV;
goto out; goto out;
} }
...@@ -1381,8 +1381,8 @@ static void zcrypt_status_mask(char status[], size_t max_adapters) ...@@ -1381,8 +1381,8 @@ static void zcrypt_status_mask(char status[], size_t max_adapters)
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
card = AP_QID_CARD(zq->queue->qid); card = AP_QID_CARD(zq->queue->qid);
if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index ||
|| card >= max_adapters) card >= max_adapters)
continue; continue;
status[card] = zc->online ? zc->user_space_type : 0x0d; status[card] = zc->online ? zc->user_space_type : 0x0d;
} }
...@@ -1402,8 +1402,8 @@ static void zcrypt_qdepth_mask(char qdepth[], size_t max_adapters) ...@@ -1402,8 +1402,8 @@ static void zcrypt_qdepth_mask(char qdepth[], size_t max_adapters)
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
card = AP_QID_CARD(zq->queue->qid); card = AP_QID_CARD(zq->queue->qid);
if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index ||
|| card >= max_adapters) card >= max_adapters)
continue; continue;
spin_lock(&zq->queue->lock); spin_lock(&zq->queue->lock);
qdepth[card] = qdepth[card] =
...@@ -1429,13 +1429,13 @@ static void zcrypt_perdev_reqcnt(u32 reqcnt[], size_t max_adapters) ...@@ -1429,13 +1429,13 @@ static void zcrypt_perdev_reqcnt(u32 reqcnt[], size_t max_adapters)
for_each_zcrypt_card(zc) { for_each_zcrypt_card(zc) {
for_each_zcrypt_queue(zq, zc) { for_each_zcrypt_queue(zq, zc) {
card = AP_QID_CARD(zq->queue->qid); card = AP_QID_CARD(zq->queue->qid);
if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index if (AP_QID_QUEUE(zq->queue->qid) != ap_domain_index ||
|| card >= max_adapters) card >= max_adapters)
continue; continue;
spin_lock(&zq->queue->lock); spin_lock(&zq->queue->lock);
cnt = zq->queue->total_request_count; cnt = zq->queue->total_request_count;
spin_unlock(&zq->queue->lock); spin_unlock(&zq->queue->lock);
reqcnt[card] = (cnt < UINT_MAX) ? (u32) cnt : UINT_MAX; reqcnt[card] = (cnt < UINT_MAX) ? (u32)cnt : UINT_MAX;
} }
} }
local_bh_enable(); local_bh_enable();
...@@ -1493,7 +1493,7 @@ static int icarsamodexpo_ioctl(struct ap_perms *perms, unsigned long arg) ...@@ -1493,7 +1493,7 @@ static int icarsamodexpo_ioctl(struct ap_perms *perms, unsigned long arg)
int rc; int rc;
struct zcrypt_track tr; struct zcrypt_track tr;
struct ica_rsa_modexpo mex; struct ica_rsa_modexpo mex;
struct ica_rsa_modexpo __user *umex = (void __user *) arg; struct ica_rsa_modexpo __user *umex = (void __user *)arg;
memset(&tr, 0, sizeof(tr)); memset(&tr, 0, sizeof(tr));
if (copy_from_user(&mex, umex, sizeof(mex))) if (copy_from_user(&mex, umex, sizeof(mex)))
...@@ -1538,7 +1538,7 @@ static int icarsacrt_ioctl(struct ap_perms *perms, unsigned long arg) ...@@ -1538,7 +1538,7 @@ static int icarsacrt_ioctl(struct ap_perms *perms, unsigned long arg)
int rc; int rc;
struct zcrypt_track tr; struct zcrypt_track tr;
struct ica_rsa_modexpo_crt crt; struct ica_rsa_modexpo_crt crt;
struct ica_rsa_modexpo_crt __user *ucrt = (void __user *) arg; struct ica_rsa_modexpo_crt __user *ucrt = (void __user *)arg;
memset(&tr, 0, sizeof(tr)); memset(&tr, 0, sizeof(tr));
if (copy_from_user(&crt, ucrt, sizeof(crt))) if (copy_from_user(&crt, ucrt, sizeof(crt)))
...@@ -1581,25 +1581,25 @@ static int icarsacrt_ioctl(struct ap_perms *perms, unsigned long arg) ...@@ -1581,25 +1581,25 @@ static int icarsacrt_ioctl(struct ap_perms *perms, unsigned long arg)
static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg) static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg)
{ {
int rc; int rc;
struct ica_xcRB xcRB; struct ica_xcRB xcrb;
struct zcrypt_track tr; struct zcrypt_track tr;
struct ica_xcRB __user *uxcRB = (void __user *) arg; struct ica_xcRB __user *uxcrb = (void __user *)arg;
memset(&tr, 0, sizeof(tr)); memset(&tr, 0, sizeof(tr));
if (copy_from_user(&xcRB, uxcRB, sizeof(xcRB))) if (copy_from_user(&xcrb, uxcrb, sizeof(xcrb)))
return -EFAULT; return -EFAULT;
#ifdef CONFIG_ZCRYPT_DEBUG #ifdef CONFIG_ZCRYPT_DEBUG
if ((xcRB.status & 0x8000FFFF) == 0x80004649 /* 'FI' */) { if ((xcrb.status & 0x8000FFFF) == 0x80004649 /* 'FI' */) {
if (!capable(CAP_SYS_ADMIN)) if (!capable(CAP_SYS_ADMIN))
return -EPERM; return -EPERM;
tr.fi.cmd = (u16)(xcRB.status >> 16); tr.fi.cmd = (u16)(xcrb.status >> 16);
} }
xcRB.status = 0; xcrb.status = 0;
#endif #endif
do { do {
rc = _zcrypt_send_cprb(true, perms, &tr, &xcRB); rc = _zcrypt_send_cprb(true, perms, &tr, &xcrb);
if (rc == -EAGAIN) if (rc == -EAGAIN)
tr.again_counter++; tr.again_counter++;
#ifdef CONFIG_ZCRYPT_DEBUG #ifdef CONFIG_ZCRYPT_DEBUG
...@@ -1610,7 +1610,7 @@ static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg) ...@@ -1610,7 +1610,7 @@ static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg)
/* on failure: retry once again after a requested rescan */ /* on failure: retry once again after a requested rescan */
if ((rc == -ENODEV) && (zcrypt_process_rescan())) if ((rc == -ENODEV) && (zcrypt_process_rescan()))
do { do {
rc = _zcrypt_send_cprb(true, perms, &tr, &xcRB); rc = _zcrypt_send_cprb(true, perms, &tr, &xcrb);
if (rc == -EAGAIN) if (rc == -EAGAIN)
tr.again_counter++; tr.again_counter++;
} while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX); } while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX);
...@@ -1618,8 +1618,8 @@ static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg) ...@@ -1618,8 +1618,8 @@ static int zsecsendcprb_ioctl(struct ap_perms *perms, unsigned long arg)
rc = -EIO; rc = -EIO;
if (rc) if (rc)
ZCRYPT_DBF_DBG("ioctl ZSENDCPRB rc=%d status=0x%x\n", ZCRYPT_DBF_DBG("ioctl ZSENDCPRB rc=%d status=0x%x\n",
rc, xcRB.status); rc, xcrb.status);
if (copy_to_user(uxcRB, &xcRB, sizeof(xcRB))) if (copy_to_user(uxcrb, &xcrb, sizeof(xcrb)))
return -EFAULT; return -EFAULT;
return rc; return rc;
} }
...@@ -1674,7 +1674,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1674,7 +1674,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
{ {
int rc; int rc;
struct ap_perms *perms = struct ap_perms *perms =
(struct ap_perms *) filp->private_data; (struct ap_perms *)filp->private_data;
rc = zcrypt_check_ioctl(perms, cmd); rc = zcrypt_check_ioctl(perms, cmd);
if (rc) if (rc)
...@@ -1698,7 +1698,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1698,7 +1698,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
if (!device_status) if (!device_status)
return -ENOMEM; return -ENOMEM;
zcrypt_device_status_mask_ext(device_status); zcrypt_device_status_mask_ext(device_status);
if (copy_to_user((char __user *) arg, device_status, if (copy_to_user((char __user *)arg, device_status,
total_size)) total_size))
rc = -EFAULT; rc = -EFAULT;
kfree(device_status); kfree(device_status);
...@@ -1708,7 +1708,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1708,7 +1708,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
char status[AP_DEVICES]; char status[AP_DEVICES];
zcrypt_status_mask(status, AP_DEVICES); zcrypt_status_mask(status, AP_DEVICES);
if (copy_to_user((char __user *) arg, status, sizeof(status))) if (copy_to_user((char __user *)arg, status, sizeof(status)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1716,7 +1716,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1716,7 +1716,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
char qdepth[AP_DEVICES]; char qdepth[AP_DEVICES];
zcrypt_qdepth_mask(qdepth, AP_DEVICES); zcrypt_qdepth_mask(qdepth, AP_DEVICES);
if (copy_to_user((char __user *) arg, qdepth, sizeof(qdepth))) if (copy_to_user((char __user *)arg, qdepth, sizeof(qdepth)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1727,21 +1727,21 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1727,21 +1727,21 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
if (!reqcnt) if (!reqcnt)
return -ENOMEM; return -ENOMEM;
zcrypt_perdev_reqcnt(reqcnt, AP_DEVICES); zcrypt_perdev_reqcnt(reqcnt, AP_DEVICES);
if (copy_to_user((int __user *) arg, reqcnt, if (copy_to_user((int __user *)arg, reqcnt,
sizeof(u32) * AP_DEVICES)) sizeof(u32) * AP_DEVICES))
rc = -EFAULT; rc = -EFAULT;
kfree(reqcnt); kfree(reqcnt);
return rc; return rc;
} }
case Z90STAT_REQUESTQ_COUNT: case Z90STAT_REQUESTQ_COUNT:
return put_user(zcrypt_requestq_count(), (int __user *) arg); return put_user(zcrypt_requestq_count(), (int __user *)arg);
case Z90STAT_PENDINGQ_COUNT: case Z90STAT_PENDINGQ_COUNT:
return put_user(zcrypt_pendingq_count(), (int __user *) arg); return put_user(zcrypt_pendingq_count(), (int __user *)arg);
case Z90STAT_TOTALOPEN_COUNT: case Z90STAT_TOTALOPEN_COUNT:
return put_user(atomic_read(&zcrypt_open_count), return put_user(atomic_read(&zcrypt_open_count),
(int __user *) arg); (int __user *)arg);
case Z90STAT_DOMAIN_INDEX: case Z90STAT_DOMAIN_INDEX:
return put_user(ap_domain_index, (int __user *) arg); return put_user(ap_domain_index, (int __user *)arg);
/* /*
* Deprecated ioctls * Deprecated ioctls
*/ */
...@@ -1755,7 +1755,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1755,7 +1755,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
if (!device_status) if (!device_status)
return -ENOMEM; return -ENOMEM;
zcrypt_device_status_mask(device_status); zcrypt_device_status_mask(device_status);
if (copy_to_user((char __user *) arg, device_status, if (copy_to_user((char __user *)arg, device_status,
total_size)) total_size))
rc = -EFAULT; rc = -EFAULT;
kfree(device_status); kfree(device_status);
...@@ -1766,7 +1766,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1766,7 +1766,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
char status[MAX_ZDEV_CARDIDS]; char status[MAX_ZDEV_CARDIDS];
zcrypt_status_mask(status, MAX_ZDEV_CARDIDS); zcrypt_status_mask(status, MAX_ZDEV_CARDIDS);
if (copy_to_user((char __user *) arg, status, sizeof(status))) if (copy_to_user((char __user *)arg, status, sizeof(status)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1775,7 +1775,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1775,7 +1775,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
char qdepth[MAX_ZDEV_CARDIDS]; char qdepth[MAX_ZDEV_CARDIDS];
zcrypt_qdepth_mask(qdepth, MAX_ZDEV_CARDIDS); zcrypt_qdepth_mask(qdepth, MAX_ZDEV_CARDIDS);
if (copy_to_user((char __user *) arg, qdepth, sizeof(qdepth))) if (copy_to_user((char __user *)arg, qdepth, sizeof(qdepth)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1784,7 +1784,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd, ...@@ -1784,7 +1784,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
u32 reqcnt[MAX_ZDEV_CARDIDS]; u32 reqcnt[MAX_ZDEV_CARDIDS];
zcrypt_perdev_reqcnt(reqcnt, MAX_ZDEV_CARDIDS); zcrypt_perdev_reqcnt(reqcnt, MAX_ZDEV_CARDIDS);
if (copy_to_user((int __user *) arg, reqcnt, sizeof(reqcnt))) if (copy_to_user((int __user *)arg, reqcnt, sizeof(reqcnt)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -1899,7 +1899,7 @@ static long trans_modexpo_crt32(struct ap_perms *perms, struct file *filp, ...@@ -1899,7 +1899,7 @@ static long trans_modexpo_crt32(struct ap_perms *perms, struct file *filp,
&ucrt32->outputdatalength); &ucrt32->outputdatalength);
} }
struct compat_ica_xcRB { struct compat_ica_xcrb {
unsigned short agent_ID; unsigned short agent_ID;
unsigned int user_defined; unsigned int user_defined;
unsigned short request_ID; unsigned short request_ID;
...@@ -1919,66 +1919,66 @@ struct compat_ica_xcRB { ...@@ -1919,66 +1919,66 @@ struct compat_ica_xcRB {
unsigned int status; unsigned int status;
} __packed; } __packed;
static long trans_xcRB32(struct ap_perms *perms, struct file *filp, static long trans_xcrb32(struct ap_perms *perms, struct file *filp,
unsigned int cmd, unsigned long arg) unsigned int cmd, unsigned long arg)
{ {
struct compat_ica_xcRB __user *uxcRB32 = compat_ptr(arg); struct compat_ica_xcrb __user *uxcrb32 = compat_ptr(arg);
struct compat_ica_xcRB xcRB32; struct compat_ica_xcrb xcrb32;
struct zcrypt_track tr; struct zcrypt_track tr;
struct ica_xcRB xcRB64; struct ica_xcRB xcrb64;
long rc; long rc;
memset(&tr, 0, sizeof(tr)); memset(&tr, 0, sizeof(tr));
if (copy_from_user(&xcRB32, uxcRB32, sizeof(xcRB32))) if (copy_from_user(&xcrb32, uxcrb32, sizeof(xcrb32)))
return -EFAULT; return -EFAULT;
xcRB64.agent_ID = xcRB32.agent_ID; xcrb64.agent_ID = xcrb32.agent_ID;
xcRB64.user_defined = xcRB32.user_defined; xcrb64.user_defined = xcrb32.user_defined;
xcRB64.request_ID = xcRB32.request_ID; xcrb64.request_ID = xcrb32.request_ID;
xcRB64.request_control_blk_length = xcrb64.request_control_blk_length =
xcRB32.request_control_blk_length; xcrb32.request_control_blk_length;
xcRB64.request_control_blk_addr = xcrb64.request_control_blk_addr =
compat_ptr(xcRB32.request_control_blk_addr); compat_ptr(xcrb32.request_control_blk_addr);
xcRB64.request_data_length = xcrb64.request_data_length =
xcRB32.request_data_length; xcrb32.request_data_length;
xcRB64.request_data_address = xcrb64.request_data_address =
compat_ptr(xcRB32.request_data_address); compat_ptr(xcrb32.request_data_address);
xcRB64.reply_control_blk_length = xcrb64.reply_control_blk_length =
xcRB32.reply_control_blk_length; xcrb32.reply_control_blk_length;
xcRB64.reply_control_blk_addr = xcrb64.reply_control_blk_addr =
compat_ptr(xcRB32.reply_control_blk_addr); compat_ptr(xcrb32.reply_control_blk_addr);
xcRB64.reply_data_length = xcRB32.reply_data_length; xcrb64.reply_data_length = xcrb32.reply_data_length;
xcRB64.reply_data_addr = xcrb64.reply_data_addr =
compat_ptr(xcRB32.reply_data_addr); compat_ptr(xcrb32.reply_data_addr);
xcRB64.priority_window = xcRB32.priority_window; xcrb64.priority_window = xcrb32.priority_window;
xcRB64.status = xcRB32.status; xcrb64.status = xcrb32.status;
do { do {
rc = _zcrypt_send_cprb(true, perms, &tr, &xcRB64); rc = _zcrypt_send_cprb(true, perms, &tr, &xcrb64);
if (rc == -EAGAIN) if (rc == -EAGAIN)
tr.again_counter++; tr.again_counter++;
} while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX); } while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX);
/* on failure: retry once again after a requested rescan */ /* on failure: retry once again after a requested rescan */
if ((rc == -ENODEV) && (zcrypt_process_rescan())) if ((rc == -ENODEV) && (zcrypt_process_rescan()))
do { do {
rc = _zcrypt_send_cprb(true, perms, &tr, &xcRB64); rc = _zcrypt_send_cprb(true, perms, &tr, &xcrb64);
if (rc == -EAGAIN) if (rc == -EAGAIN)
tr.again_counter++; tr.again_counter++;
} while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX); } while (rc == -EAGAIN && tr.again_counter < TRACK_AGAIN_MAX);
if (rc == -EAGAIN && tr.again_counter >= TRACK_AGAIN_MAX) if (rc == -EAGAIN && tr.again_counter >= TRACK_AGAIN_MAX)
rc = -EIO; rc = -EIO;
xcRB32.reply_control_blk_length = xcRB64.reply_control_blk_length; xcrb32.reply_control_blk_length = xcrb64.reply_control_blk_length;
xcRB32.reply_data_length = xcRB64.reply_data_length; xcrb32.reply_data_length = xcrb64.reply_data_length;
xcRB32.status = xcRB64.status; xcrb32.status = xcrb64.status;
if (copy_to_user(uxcRB32, &xcRB32, sizeof(xcRB32))) if (copy_to_user(uxcrb32, &xcrb32, sizeof(xcrb32)))
return -EFAULT; return -EFAULT;
return rc; return rc;
} }
static long zcrypt_compat_ioctl(struct file *filp, unsigned int cmd, static long zcrypt_compat_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg) unsigned long arg)
{ {
int rc; int rc;
struct ap_perms *perms = struct ap_perms *perms =
(struct ap_perms *) filp->private_data; (struct ap_perms *)filp->private_data;
rc = zcrypt_check_ioctl(perms, cmd); rc = zcrypt_check_ioctl(perms, cmd);
if (rc) if (rc)
...@@ -1989,7 +1989,7 @@ static long zcrypt_compat_ioctl(struct file *filp, unsigned int cmd, ...@@ -1989,7 +1989,7 @@ static long zcrypt_compat_ioctl(struct file *filp, unsigned int cmd,
if (cmd == ICARSACRT) if (cmd == ICARSACRT)
return trans_modexpo_crt32(perms, filp, cmd, arg); return trans_modexpo_crt32(perms, filp, cmd, arg);
if (cmd == ZSECSENDCPRB) if (cmd == ZSECSENDCPRB)
return trans_xcRB32(perms, filp, cmd, arg); return trans_xcrb32(perms, filp, cmd, arg);
return zcrypt_unlocked_ioctl(filp, cmd, arg); return zcrypt_unlocked_ioctl(filp, cmd, arg);
} }
#endif #endif
...@@ -2033,10 +2033,10 @@ static int zcrypt_rng_data_read(struct hwrng *rng, u32 *data) ...@@ -2033,10 +2033,10 @@ static int zcrypt_rng_data_read(struct hwrng *rng, u32 *data)
* read method calls. * read method calls.
*/ */
if (zcrypt_rng_buffer_index == 0) { if (zcrypt_rng_buffer_index == 0) {
rc = zcrypt_rng((char *) zcrypt_rng_buffer); rc = zcrypt_rng((char *)zcrypt_rng_buffer);
/* on failure: retry once again after a requested rescan */ /* on failure: retry once again after a requested rescan */
if ((rc == -ENODEV) && (zcrypt_process_rescan())) if ((rc == -ENODEV) && (zcrypt_process_rescan()))
rc = zcrypt_rng((char *) zcrypt_rng_buffer); rc = zcrypt_rng((char *)zcrypt_rng_buffer);
if (rc < 0) if (rc < 0)
return -EIO; return -EIO;
zcrypt_rng_buffer_index = rc / sizeof(*data); zcrypt_rng_buffer_index = rc / sizeof(*data);
...@@ -2057,7 +2057,7 @@ int zcrypt_rng_device_add(void) ...@@ -2057,7 +2057,7 @@ int zcrypt_rng_device_add(void)
mutex_lock(&zcrypt_rng_mutex); mutex_lock(&zcrypt_rng_mutex);
if (zcrypt_rng_device_count == 0) { if (zcrypt_rng_device_count == 0) {
zcrypt_rng_buffer = (u32 *) get_zeroed_page(GFP_KERNEL); zcrypt_rng_buffer = (u32 *)get_zeroed_page(GFP_KERNEL);
if (!zcrypt_rng_buffer) { if (!zcrypt_rng_buffer) {
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
...@@ -2069,13 +2069,14 @@ int zcrypt_rng_device_add(void) ...@@ -2069,13 +2069,14 @@ int zcrypt_rng_device_add(void)
if (rc) if (rc)
goto out_free; goto out_free;
zcrypt_rng_device_count = 1; zcrypt_rng_device_count = 1;
} else } else {
zcrypt_rng_device_count++; zcrypt_rng_device_count++;
}
mutex_unlock(&zcrypt_rng_mutex); mutex_unlock(&zcrypt_rng_mutex);
return 0; return 0;
out_free: out_free:
free_page((unsigned long) zcrypt_rng_buffer); free_page((unsigned long)zcrypt_rng_buffer);
out: out:
mutex_unlock(&zcrypt_rng_mutex); mutex_unlock(&zcrypt_rng_mutex);
return rc; return rc;
...@@ -2087,7 +2088,7 @@ void zcrypt_rng_device_remove(void) ...@@ -2087,7 +2088,7 @@ void zcrypt_rng_device_remove(void)
zcrypt_rng_device_count--; zcrypt_rng_device_count--;
if (zcrypt_rng_device_count == 0) { if (zcrypt_rng_device_count == 0) {
hwrng_unregister(&zcrypt_rng_dev); hwrng_unregister(&zcrypt_rng_dev);
free_page((unsigned long) zcrypt_rng_buffer); free_page((unsigned long)zcrypt_rng_buffer);
} }
mutex_unlock(&zcrypt_rng_mutex); mutex_unlock(&zcrypt_rng_mutex);
} }
......
...@@ -170,7 +170,7 @@ static inline unsigned long z_copy_from_user(bool userspace, ...@@ -170,7 +170,7 @@ static inline unsigned long z_copy_from_user(bool userspace,
{ {
if (likely(userspace)) if (likely(userspace))
return copy_from_user(to, from, n); return copy_from_user(to, from, n);
memcpy(to, (void __force *) from, n); memcpy(to, (void __force *)from, n);
return 0; return 0;
} }
...@@ -181,7 +181,7 @@ static inline unsigned long z_copy_to_user(bool userspace, ...@@ -181,7 +181,7 @@ static inline unsigned long z_copy_to_user(bool userspace,
{ {
if (likely(userspace)) if (likely(userspace))
return copy_to_user(to, from, n); return copy_to_user(to, from, n);
memcpy((void __force *) to, from, n); memcpy((void __force *)to, from, n);
return 0; return 0;
} }
......
...@@ -138,7 +138,7 @@ struct zcrypt_card *zcrypt_card_alloc(void) ...@@ -138,7 +138,7 @@ struct zcrypt_card *zcrypt_card_alloc(void)
{ {
struct zcrypt_card *zc; struct zcrypt_card *zc;
zc = kzalloc(sizeof(struct zcrypt_card), GFP_KERNEL); zc = kzalloc(sizeof(*zc), GFP_KERNEL);
if (!zc) if (!zc)
return NULL; return NULL;
INIT_LIST_HEAD(&zc->list); INIT_LIST_HEAD(&zc->list);
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#ifndef _ZCRYPT_CCA_KEY_H_ #ifndef _ZCRYPT_CCA_KEY_H_
#define _ZCRYPT_CCA_KEY_H_ #define _ZCRYPT_CCA_KEY_H_
struct T6_keyBlock_hdr { struct t6_keyblock_hdr {
unsigned short blen; unsigned short blen;
unsigned short ulen; unsigned short ulen;
unsigned short flags; unsigned short flags;
...@@ -63,7 +63,7 @@ struct cca_public_sec { ...@@ -63,7 +63,7 @@ struct cca_public_sec {
* complement of the residue modulo 8 of the sum of * complement of the residue modulo 8 of the sum of
* (p_len + q_len + dp_len + dq_len + u_len). * (p_len + q_len + dp_len + dq_len + u_len).
*/ */
struct cca_pvt_ext_CRT_sec { struct cca_pvt_ext_crt_sec {
unsigned char section_identifier; unsigned char section_identifier;
unsigned char version; unsigned char version;
unsigned short section_length; unsigned short section_length;
...@@ -108,9 +108,9 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p) ...@@ -108,9 +108,9 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p)
.section_identifier = 0x04, .section_identifier = 0x04,
}; };
struct { struct {
struct T6_keyBlock_hdr t6_hdr; struct t6_keyblock_hdr t6_hdr;
struct cca_token_hdr pubHdr; struct cca_token_hdr pubhdr;
struct cca_public_sec pubSec; struct cca_public_sec pubsec;
char exponent[0]; char exponent[0];
} __packed *key = p; } __packed *key = p;
unsigned char *temp; unsigned char *temp;
...@@ -127,8 +127,8 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p) ...@@ -127,8 +127,8 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p)
memset(key, 0, sizeof(*key)); memset(key, 0, sizeof(*key));
key->pubHdr = static_pub_hdr; key->pubhdr = static_pub_hdr;
key->pubSec = static_pub_sec; key->pubsec = static_pub_sec;
/* key parameter block */ /* key parameter block */
temp = key->exponent; temp = key->exponent;
...@@ -146,16 +146,16 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p) ...@@ -146,16 +146,16 @@ static inline int zcrypt_type6_mex_key_en(struct ica_rsa_modexpo *mex, void *p)
if (copy_from_user(temp, mex->n_modulus, mex->inputdatalength)) if (copy_from_user(temp, mex->n_modulus, mex->inputdatalength))
return -EFAULT; return -EFAULT;
key->pubSec.modulus_bit_len = 8 * mex->inputdatalength; key->pubsec.modulus_bit_len = 8 * mex->inputdatalength;
key->pubSec.modulus_byte_len = mex->inputdatalength; key->pubsec.modulus_byte_len = mex->inputdatalength;
key->pubSec.exponent_len = mex->inputdatalength - i; key->pubsec.exponent_len = mex->inputdatalength - i;
key->pubSec.section_length = sizeof(key->pubSec) + key->pubsec.section_length = sizeof(key->pubsec) +
2*mex->inputdatalength - i; 2 * mex->inputdatalength - i;
key->pubHdr.token_length = key->pubhdr.token_length =
key->pubSec.section_length + sizeof(key->pubHdr); key->pubsec.section_length + sizeof(key->pubhdr);
key->t6_hdr.ulen = key->pubHdr.token_length + 4; key->t6_hdr.ulen = key->pubhdr.token_length + 4;
key->t6_hdr.blen = key->pubHdr.token_length + 6; key->t6_hdr.blen = key->pubhdr.token_length + 6;
return sizeof(*key) + 2*mex->inputdatalength - i; return sizeof(*key) + 2 * mex->inputdatalength - i;
} }
/** /**
...@@ -177,9 +177,9 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p) ...@@ -177,9 +177,9 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
}; };
static char pk_exponent[3] = { 0x01, 0x00, 0x01 }; static char pk_exponent[3] = { 0x01, 0x00, 0x01 };
struct { struct {
struct T6_keyBlock_hdr t6_hdr; struct t6_keyblock_hdr t6_hdr;
struct cca_token_hdr token; struct cca_token_hdr token;
struct cca_pvt_ext_CRT_sec pvt; struct cca_pvt_ext_crt_sec pvt;
char key_parts[0]; char key_parts[0];
} __packed *key = p; } __packed *key = p;
struct cca_public_sec *pub; struct cca_public_sec *pub;
...@@ -198,8 +198,8 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p) ...@@ -198,8 +198,8 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
short_len = (crt->inputdatalength + 1) / 2; short_len = (crt->inputdatalength + 1) / 2;
long_len = short_len + 8; long_len = short_len + 8;
pad_len = -(3*long_len + 2*short_len) & 7; pad_len = -(3 * long_len + 2 * short_len) & 7;
key_len = 3*long_len + 2*short_len + pad_len + crt->inputdatalength; key_len = 3 * long_len + 2 * short_len + pad_len + crt->inputdatalength;
size = sizeof(*key) + key_len + sizeof(*pub) + 3; size = sizeof(*key) + key_len + sizeof(*pub) + 3;
/* parameter block.key block */ /* parameter block.key block */
...@@ -223,15 +223,15 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p) ...@@ -223,15 +223,15 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
/* key parts */ /* key parts */
if (copy_from_user(key->key_parts, crt->np_prime, long_len) || if (copy_from_user(key->key_parts, crt->np_prime, long_len) ||
copy_from_user(key->key_parts + long_len, copy_from_user(key->key_parts + long_len,
crt->nq_prime, short_len) || crt->nq_prime, short_len) ||
copy_from_user(key->key_parts + long_len + short_len, copy_from_user(key->key_parts + long_len + short_len,
crt->bp_key, long_len) || crt->bp_key, long_len) ||
copy_from_user(key->key_parts + 2*long_len + short_len, copy_from_user(key->key_parts + 2 * long_len + short_len,
crt->bq_key, short_len) || crt->bq_key, short_len) ||
copy_from_user(key->key_parts + 2*long_len + 2*short_len, copy_from_user(key->key_parts + 2 * long_len + 2 * short_len,
crt->u_mult_inv, long_len)) crt->u_mult_inv, long_len))
return -EFAULT; return -EFAULT;
memset(key->key_parts + 3*long_len + 2*short_len + pad_len, memset(key->key_parts + 3 * long_len + 2 * short_len + pad_len,
0xff, crt->inputdatalength); 0xff, crt->inputdatalength);
pub = (struct cca_public_sec *)(key->key_parts + key_len); pub = (struct cca_public_sec *)(key->key_parts + key_len);
*pub = static_cca_pub_sec; *pub = static_cca_pub_sec;
...@@ -241,7 +241,7 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p) ...@@ -241,7 +241,7 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
* section. So, an arbitrary public exponent of 0x010001 will be * section. So, an arbitrary public exponent of 0x010001 will be
* used. * used.
*/ */
memcpy((char *) (pub + 1), pk_exponent, 3); memcpy((char *)(pub + 1), pk_exponent, 3);
return size; return size;
} }
......
...@@ -53,26 +53,26 @@ static DEFINE_SPINLOCK(cca_info_list_lock); ...@@ -53,26 +53,26 @@ static DEFINE_SPINLOCK(cca_info_list_lock);
int cca_check_secaeskeytoken(debug_info_t *dbg, int dbflvl, int cca_check_secaeskeytoken(debug_info_t *dbg, int dbflvl,
const u8 *token, int keybitsize) const u8 *token, int keybitsize)
{ {
struct secaeskeytoken *t = (struct secaeskeytoken *) token; struct secaeskeytoken *t = (struct secaeskeytoken *)token;
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
if (t->type != TOKTYPE_CCA_INTERNAL) { if (t->type != TOKTYPE_CCA_INTERNAL) {
if (dbg) if (dbg)
DBF("%s token check failed, type 0x%02x != 0x%02x\n", DBF("%s token check failed, type 0x%02x != 0x%02x\n",
__func__, (int) t->type, TOKTYPE_CCA_INTERNAL); __func__, (int)t->type, TOKTYPE_CCA_INTERNAL);
return -EINVAL; return -EINVAL;
} }
if (t->version != TOKVER_CCA_AES) { if (t->version != TOKVER_CCA_AES) {
if (dbg) if (dbg)
DBF("%s token check failed, version 0x%02x != 0x%02x\n", DBF("%s token check failed, version 0x%02x != 0x%02x\n",
__func__, (int) t->version, TOKVER_CCA_AES); __func__, (int)t->version, TOKVER_CCA_AES);
return -EINVAL; return -EINVAL;
} }
if (keybitsize > 0 && t->bitsize != keybitsize) { if (keybitsize > 0 && t->bitsize != keybitsize) {
if (dbg) if (dbg)
DBF("%s token check failed, bitsize %d != %d\n", DBF("%s token check failed, bitsize %d != %d\n",
__func__, (int) t->bitsize, keybitsize); __func__, (int)t->bitsize, keybitsize);
return -EINVAL; return -EINVAL;
} }
...@@ -93,7 +93,7 @@ int cca_check_secaescipherkey(debug_info_t *dbg, int dbflvl, ...@@ -93,7 +93,7 @@ int cca_check_secaescipherkey(debug_info_t *dbg, int dbflvl,
const u8 *token, int keybitsize, const u8 *token, int keybitsize,
int checkcpacfexport) int checkcpacfexport)
{ {
struct cipherkeytoken *t = (struct cipherkeytoken *) token; struct cipherkeytoken *t = (struct cipherkeytoken *)token;
bool keybitsizeok = true; bool keybitsizeok = true;
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
...@@ -101,37 +101,37 @@ int cca_check_secaescipherkey(debug_info_t *dbg, int dbflvl, ...@@ -101,37 +101,37 @@ int cca_check_secaescipherkey(debug_info_t *dbg, int dbflvl,
if (t->type != TOKTYPE_CCA_INTERNAL) { if (t->type != TOKTYPE_CCA_INTERNAL) {
if (dbg) if (dbg)
DBF("%s token check failed, type 0x%02x != 0x%02x\n", DBF("%s token check failed, type 0x%02x != 0x%02x\n",
__func__, (int) t->type, TOKTYPE_CCA_INTERNAL); __func__, (int)t->type, TOKTYPE_CCA_INTERNAL);
return -EINVAL; return -EINVAL;
} }
if (t->version != TOKVER_CCA_VLSC) { if (t->version != TOKVER_CCA_VLSC) {
if (dbg) if (dbg)
DBF("%s token check failed, version 0x%02x != 0x%02x\n", DBF("%s token check failed, version 0x%02x != 0x%02x\n",
__func__, (int) t->version, TOKVER_CCA_VLSC); __func__, (int)t->version, TOKVER_CCA_VLSC);
return -EINVAL; return -EINVAL;
} }
if (t->algtype != 0x02) { if (t->algtype != 0x02) {
if (dbg) if (dbg)
DBF("%s token check failed, algtype 0x%02x != 0x02\n", DBF("%s token check failed, algtype 0x%02x != 0x02\n",
__func__, (int) t->algtype); __func__, (int)t->algtype);
return -EINVAL; return -EINVAL;
} }
if (t->keytype != 0x0001) { if (t->keytype != 0x0001) {
if (dbg) if (dbg)
DBF("%s token check failed, keytype 0x%04x != 0x0001\n", DBF("%s token check failed, keytype 0x%04x != 0x0001\n",
__func__, (int) t->keytype); __func__, (int)t->keytype);
return -EINVAL; return -EINVAL;
} }
if (t->plfver != 0x00 && t->plfver != 0x01) { if (t->plfver != 0x00 && t->plfver != 0x01) {
if (dbg) if (dbg)
DBF("%s token check failed, unknown plfver 0x%02x\n", DBF("%s token check failed, unknown plfver 0x%02x\n",
__func__, (int) t->plfver); __func__, (int)t->plfver);
return -EINVAL; return -EINVAL;
} }
if (t->wpllen != 512 && t->wpllen != 576 && t->wpllen != 640) { if (t->wpllen != 512 && t->wpllen != 576 && t->wpllen != 640) {
if (dbg) if (dbg)
DBF("%s token check failed, unknown wpllen %d\n", DBF("%s token check failed, unknown wpllen %d\n",
__func__, (int) t->wpllen); __func__, (int)t->wpllen);
return -EINVAL; return -EINVAL;
} }
if (keybitsize > 0) { if (keybitsize > 0) {
...@@ -180,26 +180,26 @@ int cca_check_sececckeytoken(debug_info_t *dbg, int dbflvl, ...@@ -180,26 +180,26 @@ int cca_check_sececckeytoken(debug_info_t *dbg, int dbflvl,
const u8 *token, size_t keysize, const u8 *token, size_t keysize,
int checkcpacfexport) int checkcpacfexport)
{ {
struct eccprivkeytoken *t = (struct eccprivkeytoken *) token; struct eccprivkeytoken *t = (struct eccprivkeytoken *)token;
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
if (t->type != TOKTYPE_CCA_INTERNAL_PKA) { if (t->type != TOKTYPE_CCA_INTERNAL_PKA) {
if (dbg) if (dbg)
DBF("%s token check failed, type 0x%02x != 0x%02x\n", DBF("%s token check failed, type 0x%02x != 0x%02x\n",
__func__, (int) t->type, TOKTYPE_CCA_INTERNAL_PKA); __func__, (int)t->type, TOKTYPE_CCA_INTERNAL_PKA);
return -EINVAL; return -EINVAL;
} }
if (t->len > keysize) { if (t->len > keysize) {
if (dbg) if (dbg)
DBF("%s token check failed, len %d > keysize %zu\n", DBF("%s token check failed, len %d > keysize %zu\n",
__func__, (int) t->len, keysize); __func__, (int)t->len, keysize);
return -EINVAL; return -EINVAL;
} }
if (t->secid != 0x20) { if (t->secid != 0x20) {
if (dbg) if (dbg)
DBF("%s token check failed, secid 0x%02x != 0x20\n", DBF("%s token check failed, secid 0x%02x != 0x20\n",
__func__, (int) t->secid); __func__, (int)t->secid);
return -EINVAL; return -EINVAL;
} }
if (checkcpacfexport && !(t->kutc & 0x01)) { if (checkcpacfexport && !(t->kutc & 0x01)) {
...@@ -222,9 +222,9 @@ EXPORT_SYMBOL(cca_check_sececckeytoken); ...@@ -222,9 +222,9 @@ EXPORT_SYMBOL(cca_check_sececckeytoken);
* on failure. * on failure.
*/ */
static int alloc_and_prep_cprbmem(size_t paramblen, static int alloc_and_prep_cprbmem(size_t paramblen,
u8 **pcprbmem, u8 **p_cprb_mem,
struct CPRBX **preqCPRB, struct CPRBX **p_req_cprb,
struct CPRBX **prepCPRB) struct CPRBX **p_rep_cprb)
{ {
u8 *cprbmem; u8 *cprbmem;
size_t cprbplusparamblen = sizeof(struct CPRBX) + paramblen; size_t cprbplusparamblen = sizeof(struct CPRBX) + paramblen;
...@@ -238,8 +238,8 @@ static int alloc_and_prep_cprbmem(size_t paramblen, ...@@ -238,8 +238,8 @@ static int alloc_and_prep_cprbmem(size_t paramblen,
if (!cprbmem) if (!cprbmem)
return -ENOMEM; return -ENOMEM;
preqcblk = (struct CPRBX *) cprbmem; preqcblk = (struct CPRBX *)cprbmem;
prepcblk = (struct CPRBX *) (cprbmem + cprbplusparamblen); prepcblk = (struct CPRBX *)(cprbmem + cprbplusparamblen);
/* fill request cprb struct */ /* fill request cprb struct */
preqcblk->cprb_len = sizeof(struct CPRBX); preqcblk->cprb_len = sizeof(struct CPRBX);
...@@ -248,14 +248,14 @@ static int alloc_and_prep_cprbmem(size_t paramblen, ...@@ -248,14 +248,14 @@ static int alloc_and_prep_cprbmem(size_t paramblen,
preqcblk->rpl_msgbl = cprbplusparamblen; preqcblk->rpl_msgbl = cprbplusparamblen;
if (paramblen) { if (paramblen) {
preqcblk->req_parmb = preqcblk->req_parmb =
((u8 __user *) preqcblk) + sizeof(struct CPRBX); ((u8 __user *)preqcblk) + sizeof(struct CPRBX);
preqcblk->rpl_parmb = preqcblk->rpl_parmb =
((u8 __user *) prepcblk) + sizeof(struct CPRBX); ((u8 __user *)prepcblk) + sizeof(struct CPRBX);
} }
*pcprbmem = cprbmem; *p_cprb_mem = cprbmem;
*preqCPRB = preqcblk; *p_req_cprb = preqcblk;
*prepCPRB = prepcblk; *p_rep_cprb = prepcblk;
return 0; return 0;
} }
...@@ -286,9 +286,9 @@ static inline void prep_xcrb(struct ica_xcRB *pxcrb, ...@@ -286,9 +286,9 @@ static inline void prep_xcrb(struct ica_xcRB *pxcrb,
pxcrb->user_defined = (cardnr == 0xFFFF ? AUTOSELECT : cardnr); pxcrb->user_defined = (cardnr == 0xFFFF ? AUTOSELECT : cardnr);
pxcrb->request_control_blk_length = pxcrb->request_control_blk_length =
preqcblk->cprb_len + preqcblk->req_parml; preqcblk->cprb_len + preqcblk->req_parml;
pxcrb->request_control_blk_addr = (void __user *) preqcblk; pxcrb->request_control_blk_addr = (void __user *)preqcblk;
pxcrb->reply_control_blk_length = preqcblk->rpl_msgbl; pxcrb->reply_control_blk_length = preqcblk->rpl_msgbl;
pxcrb->reply_control_blk_addr = (void __user *) prepcblk; pxcrb->reply_control_blk_addr = (void __user *)prepcblk;
} }
/* /*
...@@ -345,7 +345,7 @@ int cca_genseckey(u16 cardnr, u16 domain, ...@@ -345,7 +345,7 @@ int cca_genseckey(u16 cardnr, u16 domain,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with KG request */ /* fill request cprb param block with KG request */
preqparm = (struct kgreqparm __force *) preqcblk->req_parmb; preqparm = (struct kgreqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "KG", 2); memcpy(preqparm->subfunc_code, "KG", 2);
preqparm->rule_array_len = sizeof(preqparm->rule_array_len); preqparm->rule_array_len = sizeof(preqparm->rule_array_len);
preqparm->lv1.len = sizeof(struct lv1); preqparm->lv1.len = sizeof(struct lv1);
...@@ -387,7 +387,7 @@ int cca_genseckey(u16 cardnr, u16 domain, ...@@ -387,7 +387,7 @@ int cca_genseckey(u16 cardnr, u16 domain,
rc = zcrypt_send_cprb(&xcrb); rc = zcrypt_send_cprb(&xcrb);
if (rc) { if (rc) {
DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, errno %d\n", DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, errno %d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -395,16 +395,16 @@ int cca_genseckey(u16 cardnr, u16 domain, ...@@ -395,16 +395,16 @@ int cca_genseckey(u16 cardnr, u16 domain,
if (prepcblk->ccp_rtcode != 0) { if (prepcblk->ccp_rtcode != 0) {
DEBUG_ERR("%s secure key generate failure, card response %d/%d\n", DEBUG_ERR("%s secure key generate failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct kgrepparm *) ptr; prepparm = (struct kgrepparm *)ptr;
/* check length of the returned secure key token */ /* check length of the returned secure key token */
seckeysize = prepparm->lv3.keyblock.toklen seckeysize = prepparm->lv3.keyblock.toklen
...@@ -419,7 +419,7 @@ int cca_genseckey(u16 cardnr, u16 domain, ...@@ -419,7 +419,7 @@ int cca_genseckey(u16 cardnr, u16 domain,
/* check secure key token */ /* check secure key token */
rc = cca_check_secaeskeytoken(zcrypt_dbf_info, DBF_ERR, rc = cca_check_secaeskeytoken(zcrypt_dbf_info, DBF_ERR,
prepparm->lv3.keyblock.tok, 8*keysize); prepparm->lv3.keyblock.tok, 8 * keysize);
if (rc) { if (rc) {
rc = -EIO; rc = -EIO;
goto out; goto out;
...@@ -486,7 +486,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -486,7 +486,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with CM request */ /* fill request cprb param block with CM request */
preqparm = (struct cmreqparm __force *) preqcblk->req_parmb; preqparm = (struct cmreqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "CM", 2); memcpy(preqparm->subfunc_code, "CM", 2);
memcpy(preqparm->rule_array, "AES ", 8); memcpy(preqparm->rule_array, "AES ", 8);
preqparm->rule_array_len = preqparm->rule_array_len =
...@@ -512,7 +512,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -512,7 +512,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
} }
preqparm->lv1.len = sizeof(struct lv1) + keysize; preqparm->lv1.len = sizeof(struct lv1) + keysize;
memcpy(preqparm->lv1.clrkey, clrkey, keysize); memcpy(preqparm->lv1.clrkey, clrkey, keysize);
plv2 = (struct lv2 *) (((u8 *) &preqparm->lv2) + keysize); plv2 = (struct lv2 *)(((u8 *)&preqparm->lv2) + keysize);
plv2->len = sizeof(struct lv2); plv2->len = sizeof(struct lv2);
plv2->keyid.len = sizeof(struct keyid); plv2->keyid.len = sizeof(struct keyid);
plv2->keyid.attr = 0x30; plv2->keyid.attr = 0x30;
...@@ -525,7 +525,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -525,7 +525,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
rc = zcrypt_send_cprb(&xcrb); rc = zcrypt_send_cprb(&xcrb);
if (rc) { if (rc) {
DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -533,16 +533,16 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -533,16 +533,16 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
if (prepcblk->ccp_rtcode != 0) { if (prepcblk->ccp_rtcode != 0) {
DEBUG_ERR("%s clear key import failure, card response %d/%d\n", DEBUG_ERR("%s clear key import failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct cmrepparm *) ptr; prepparm = (struct cmrepparm *)ptr;
/* check length of the returned secure key token */ /* check length of the returned secure key token */
seckeysize = prepparm->lv3.keyblock.toklen seckeysize = prepparm->lv3.keyblock.toklen
...@@ -557,7 +557,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -557,7 +557,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
/* check secure key token */ /* check secure key token */
rc = cca_check_secaeskeytoken(zcrypt_dbf_info, DBF_ERR, rc = cca_check_secaeskeytoken(zcrypt_dbf_info, DBF_ERR,
prepparm->lv3.keyblock.tok, 8*keysize); prepparm->lv3.keyblock.tok, 8 * keysize);
if (rc) { if (rc) {
rc = -EIO; rc = -EIO;
goto out; goto out;
...@@ -632,7 +632,7 @@ int cca_sec2protkey(u16 cardnr, u16 domain, ...@@ -632,7 +632,7 @@ int cca_sec2protkey(u16 cardnr, u16 domain,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with USK request */ /* fill request cprb param block with USK request */
preqparm = (struct uskreqparm __force *) preqcblk->req_parmb; preqparm = (struct uskreqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "US", 2); memcpy(preqparm->subfunc_code, "US", 2);
preqparm->rule_array_len = sizeof(preqparm->rule_array_len); preqparm->rule_array_len = sizeof(preqparm->rule_array_len);
preqparm->lv1.len = sizeof(struct lv1); preqparm->lv1.len = sizeof(struct lv1);
...@@ -652,7 +652,7 @@ int cca_sec2protkey(u16 cardnr, u16 domain, ...@@ -652,7 +652,7 @@ int cca_sec2protkey(u16 cardnr, u16 domain,
rc = zcrypt_send_cprb(&xcrb); rc = zcrypt_send_cprb(&xcrb);
if (rc) { if (rc) {
DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -660,8 +660,8 @@ int cca_sec2protkey(u16 cardnr, u16 domain, ...@@ -660,8 +660,8 @@ int cca_sec2protkey(u16 cardnr, u16 domain,
if (prepcblk->ccp_rtcode != 0) { if (prepcblk->ccp_rtcode != 0) {
DEBUG_ERR("%s unwrap secure key failure, card response %d/%d\n", DEBUG_ERR("%s unwrap secure key failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290) if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290)
rc = -EAGAIN; rc = -EAGAIN;
else else
...@@ -671,37 +671,37 @@ int cca_sec2protkey(u16 cardnr, u16 domain, ...@@ -671,37 +671,37 @@ int cca_sec2protkey(u16 cardnr, u16 domain,
if (prepcblk->ccp_rscode != 0) { if (prepcblk->ccp_rscode != 0) {
DEBUG_WARN("%s unwrap secure key warning, card response %d/%d\n", DEBUG_WARN("%s unwrap secure key warning, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct uskrepparm *) ptr; prepparm = (struct uskrepparm *)ptr;
/* check the returned keyblock */ /* check the returned keyblock */
if (prepparm->lv3.ckb.version != 0x01 && if (prepparm->lv3.ckb.version != 0x01 &&
prepparm->lv3.ckb.version != 0x02) { prepparm->lv3.ckb.version != 0x02) {
DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x\n", DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x\n",
__func__, (int) prepparm->lv3.ckb.version); __func__, (int)prepparm->lv3.ckb.version);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* copy the tanslated protected key */ /* copy the tanslated protected key */
switch (prepparm->lv3.ckb.len) { switch (prepparm->lv3.ckb.len) {
case 16+32: case 16 + 32:
/* AES 128 protected key */ /* AES 128 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_128; *protkeytype = PKEY_KEYTYPE_AES_128;
break; break;
case 24+32: case 24 + 32:
/* AES 192 protected key */ /* AES 192 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_192; *protkeytype = PKEY_KEYTYPE_AES_192;
break; break;
case 32+32: case 32 + 32:
/* AES 256 protected key */ /* AES 256 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_256; *protkeytype = PKEY_KEYTYPE_AES_256;
...@@ -751,7 +751,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -751,7 +751,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
struct gkreqparm { struct gkreqparm {
u8 subfunc_code[2]; u8 subfunc_code[2];
u16 rule_array_len; u16 rule_array_len;
char rule_array[2*8]; char rule_array[2 * 8];
struct { struct {
u16 len; u16 len;
u8 key_type_1[8]; u8 key_type_1[8];
...@@ -827,10 +827,10 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -827,10 +827,10 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
preqcblk->req_parml = sizeof(struct gkreqparm); preqcblk->req_parml = sizeof(struct gkreqparm);
/* prepare request param block with GK request */ /* prepare request param block with GK request */
preqparm = (struct gkreqparm __force *) preqcblk->req_parmb; preqparm = (struct gkreqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "GK", 2); memcpy(preqparm->subfunc_code, "GK", 2);
preqparm->rule_array_len = sizeof(uint16_t) + 2 * 8; preqparm->rule_array_len = sizeof(uint16_t) + 2 * 8;
memcpy(preqparm->rule_array, "AES OP ", 2*8); memcpy(preqparm->rule_array, "AES OP ", 2 * 8);
/* prepare vud block */ /* prepare vud block */
preqparm->vud.len = sizeof(preqparm->vud); preqparm->vud.len = sizeof(preqparm->vud);
...@@ -869,9 +869,9 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -869,9 +869,9 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
/* patch the skeleton key token export flags inside the kb block */ /* patch the skeleton key token export flags inside the kb block */
if (keygenflags) { if (keygenflags) {
t = (struct cipherkeytoken *) preqparm->kb.tlv3.gen_key_id_1; t = (struct cipherkeytoken *)preqparm->kb.tlv3.gen_key_id_1;
t->kmf1 |= (u16) (keygenflags & 0x0000FF00); t->kmf1 |= (u16)(keygenflags & 0x0000FF00);
t->kmf1 &= (u16) ~(keygenflags & 0x000000FF); t->kmf1 &= (u16)~(keygenflags & 0x000000FF);
} }
/* prepare xcrb struct */ /* prepare xcrb struct */
...@@ -882,7 +882,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -882,7 +882,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", "%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -891,16 +891,16 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -891,16 +891,16 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
DEBUG_ERR( DEBUG_ERR(
"%s cipher key generate failure, card response %d/%d\n", "%s cipher key generate failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct gkrepparm *) ptr; prepparm = (struct gkrepparm *)ptr;
/* do some plausibility checks on the key block */ /* do some plausibility checks on the key block */
if (prepparm->kb.len < 120 + 5 * sizeof(uint16_t) || if (prepparm->kb.len < 120 + 5 * sizeof(uint16_t) ||
...@@ -921,7 +921,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -921,7 +921,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
} }
/* copy the generated vlsc key token */ /* copy the generated vlsc key token */
t = (struct cipherkeytoken *) prepparm->kb.tlv1.gen_key; t = (struct cipherkeytoken *)prepparm->kb.tlv1.gen_key;
if (keybuf) { if (keybuf) {
if (*keybufsize >= t->len) if (*keybufsize >= t->len)
memcpy(keybuf, t, t->len); memcpy(keybuf, t, t->len);
...@@ -1006,7 +1006,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -1006,7 +1006,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
preqcblk->req_parml = 0; preqcblk->req_parml = 0;
/* prepare request param block with IP request */ /* prepare request param block with IP request */
preq_ra_block = (struct rule_array_block __force *) preqcblk->req_parmb; preq_ra_block = (struct rule_array_block __force *)preqcblk->req_parmb;
memcpy(preq_ra_block->subfunc_code, "IP", 2); memcpy(preq_ra_block->subfunc_code, "IP", 2);
preq_ra_block->rule_array_len = sizeof(uint16_t) + 2 * 8; preq_ra_block->rule_array_len = sizeof(uint16_t) + 2 * 8;
memcpy(preq_ra_block->rule_array, rule_array_1, 8); memcpy(preq_ra_block->rule_array, rule_array_1, 8);
...@@ -1050,7 +1050,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -1050,7 +1050,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", "%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -1059,16 +1059,16 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -1059,16 +1059,16 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
DEBUG_ERR( DEBUG_ERR(
"%s CSNBKPI2 failure, card response %d/%d\n", "%s CSNBKPI2 failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct iprepparm *) ptr; prepparm = (struct iprepparm *)ptr;
/* do some plausibility checks on the key block */ /* do some plausibility checks on the key block */
if (prepparm->kb.len < 120 + 3 * sizeof(uint16_t) || if (prepparm->kb.len < 120 + 3 * sizeof(uint16_t) ||
...@@ -1082,7 +1082,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -1082,7 +1082,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
/* do not check the key here, it may be incomplete */ /* do not check the key here, it may be incomplete */
/* copy the vlsc key token back */ /* copy the vlsc key token back */
t = (struct cipherkeytoken *) prepparm->kb.tlv1.key_token; t = (struct cipherkeytoken *)prepparm->kb.tlv1.key_token;
memcpy(key_token, t, t->len); memcpy(key_token, t, t->len);
*key_token_size = t->len; *key_token_size = t->len;
...@@ -1117,9 +1117,9 @@ int cca_clr2cipherkey(u16 card, u16 dom, u32 keybitsize, u32 keygenflags, ...@@ -1117,9 +1117,9 @@ int cca_clr2cipherkey(u16 card, u16 dom, u32 keybitsize, u32 keygenflags,
/* patch the skeleton key token export flags */ /* patch the skeleton key token export flags */
if (keygenflags) { if (keygenflags) {
t = (struct cipherkeytoken *) token; t = (struct cipherkeytoken *)token;
t->kmf1 |= (u16) (keygenflags & 0x0000FF00); t->kmf1 |= (u16)(keygenflags & 0x0000FF00);
t->kmf1 &= (u16) ~(keygenflags & 0x000000FF); t->kmf1 &= (u16)~(keygenflags & 0x000000FF);
} }
/* /*
...@@ -1241,7 +1241,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey, ...@@ -1241,7 +1241,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with AU request */ /* fill request cprb param block with AU request */
preqparm = (struct aureqparm __force *) preqcblk->req_parmb; preqparm = (struct aureqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "AU", 2); memcpy(preqparm->subfunc_code, "AU", 2);
preqparm->rule_array_len = preqparm->rule_array_len =
sizeof(preqparm->rule_array_len) sizeof(preqparm->rule_array_len)
...@@ -1267,7 +1267,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey, ...@@ -1267,7 +1267,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", "%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -1276,8 +1276,8 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey, ...@@ -1276,8 +1276,8 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
DEBUG_ERR( DEBUG_ERR(
"%s unwrap secure key failure, card response %d/%d\n", "%s unwrap secure key failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290) if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290)
rc = -EAGAIN; rc = -EAGAIN;
else else
...@@ -1288,44 +1288,44 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey, ...@@ -1288,44 +1288,44 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
DEBUG_WARN( DEBUG_WARN(
"%s unwrap secure key warning, card response %d/%d\n", "%s unwrap secure key warning, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct aurepparm *) ptr; prepparm = (struct aurepparm *)ptr;
/* check the returned keyblock */ /* check the returned keyblock */
if (prepparm->vud.ckb.version != 0x01 && if (prepparm->vud.ckb.version != 0x01 &&
prepparm->vud.ckb.version != 0x02) { prepparm->vud.ckb.version != 0x02) {
DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x\n", DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x\n",
__func__, (int) prepparm->vud.ckb.version); __func__, (int)prepparm->vud.ckb.version);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
if (prepparm->vud.ckb.algo != 0x02) { if (prepparm->vud.ckb.algo != 0x02) {
DEBUG_ERR( DEBUG_ERR(
"%s reply param keyblock algo mismatch 0x%02x != 0x02\n", "%s reply param keyblock algo mismatch 0x%02x != 0x02\n",
__func__, (int) prepparm->vud.ckb.algo); __func__, (int)prepparm->vud.ckb.algo);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* copy the translated protected key */ /* copy the translated protected key */
switch (prepparm->vud.ckb.keylen) { switch (prepparm->vud.ckb.keylen) {
case 16+32: case 16 + 32:
/* AES 128 protected key */ /* AES 128 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_128; *protkeytype = PKEY_KEYTYPE_AES_128;
break; break;
case 24+32: case 24 + 32:
/* AES 192 protected key */ /* AES 192 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_192; *protkeytype = PKEY_KEYTYPE_AES_192;
break; break;
case 32+32: case 32 + 32:
/* AES 256 protected key */ /* AES 256 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_256; *protkeytype = PKEY_KEYTYPE_AES_256;
...@@ -1410,7 +1410,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1410,7 +1410,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with AU request */ /* fill request cprb param block with AU request */
preqparm = (struct aureqparm __force *) preqcblk->req_parmb; preqparm = (struct aureqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "AU", 2); memcpy(preqparm->subfunc_code, "AU", 2);
preqparm->rule_array_len = preqparm->rule_array_len =
sizeof(preqparm->rule_array_len) sizeof(preqparm->rule_array_len)
...@@ -1436,7 +1436,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1436,7 +1436,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", "%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -1445,8 +1445,8 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1445,8 +1445,8 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
DEBUG_ERR( DEBUG_ERR(
"%s unwrap secure key failure, card response %d/%d\n", "%s unwrap secure key failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290) if (prepcblk->ccp_rtcode == 8 && prepcblk->ccp_rscode == 2290)
rc = -EAGAIN; rc = -EAGAIN;
else else
...@@ -1457,26 +1457,26 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1457,26 +1457,26 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
DEBUG_WARN( DEBUG_WARN(
"%s unwrap secure key warning, card response %d/%d\n", "%s unwrap secure key warning, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct aurepparm *) ptr; prepparm = (struct aurepparm *)ptr;
/* check the returned keyblock */ /* check the returned keyblock */
if (prepparm->vud.ckb.version != 0x02) { if (prepparm->vud.ckb.version != 0x02) {
DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x != 0x02\n", DEBUG_ERR("%s reply param keyblock version mismatch 0x%02x != 0x02\n",
__func__, (int) prepparm->vud.ckb.version); __func__, (int)prepparm->vud.ckb.version);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
if (prepparm->vud.ckb.algo != 0x81) { if (prepparm->vud.ckb.algo != 0x81) {
DEBUG_ERR( DEBUG_ERR(
"%s reply param keyblock algo mismatch 0x%02x != 0x81\n", "%s reply param keyblock algo mismatch 0x%02x != 0x81\n",
__func__, (int) prepparm->vud.ckb.algo); __func__, (int)prepparm->vud.ckb.algo);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
...@@ -1537,7 +1537,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain, ...@@ -1537,7 +1537,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
preqcblk->domain = domain; preqcblk->domain = domain;
/* fill request cprb param block with FQ request */ /* fill request cprb param block with FQ request */
preqparm = (struct fqreqparm __force *) preqcblk->req_parmb; preqparm = (struct fqreqparm __force *)preqcblk->req_parmb;
memcpy(preqparm->subfunc_code, "FQ", 2); memcpy(preqparm->subfunc_code, "FQ", 2);
memcpy(preqparm->rule_array, keyword, sizeof(preqparm->rule_array)); memcpy(preqparm->rule_array, keyword, sizeof(preqparm->rule_array));
preqparm->rule_array_len = preqparm->rule_array_len =
...@@ -1553,7 +1553,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain, ...@@ -1553,7 +1553,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
rc = zcrypt_send_cprb(&xcrb); rc = zcrypt_send_cprb(&xcrb);
if (rc) { if (rc) {
DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n", DEBUG_ERR("%s zcrypt_send_cprb (cardnr=%d domain=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -1561,20 +1561,20 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain, ...@@ -1561,20 +1561,20 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
if (prepcblk->ccp_rtcode != 0) { if (prepcblk->ccp_rtcode != 0) {
DEBUG_ERR("%s unwrap secure key failure, card response %d/%d\n", DEBUG_ERR("%s unwrap secure key failure, card response %d/%d\n",
__func__, __func__,
(int) prepcblk->ccp_rtcode, (int)prepcblk->ccp_rtcode,
(int) prepcblk->ccp_rscode); (int)prepcblk->ccp_rscode);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
/* process response cprb param block */ /* process response cprb param block */
ptr = ((u8 *) prepcblk) + sizeof(struct CPRBX); ptr = ((u8 *)prepcblk) + sizeof(struct CPRBX);
prepcblk->rpl_parmb = (u8 __user *) ptr; prepcblk->rpl_parmb = (u8 __user *)ptr;
prepparm = (struct fqrepparm *) ptr; prepparm = (struct fqrepparm *)ptr;
ptr = prepparm->lvdata; ptr = prepparm->lvdata;
/* check and possibly copy reply rule array */ /* check and possibly copy reply rule array */
len = *((u16 *) ptr); len = *((u16 *)ptr);
if (len > sizeof(u16)) { if (len > sizeof(u16)) {
ptr += sizeof(u16); ptr += sizeof(u16);
len -= sizeof(u16); len -= sizeof(u16);
...@@ -1585,7 +1585,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain, ...@@ -1585,7 +1585,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
ptr += len; ptr += len;
} }
/* check and possible copy reply var array */ /* check and possible copy reply var array */
len = *((u16 *) ptr); len = *((u16 *)ptr);
if (len > sizeof(u16)) { if (len > sizeof(u16)) {
ptr += sizeof(u16); ptr += sizeof(u16);
len -= sizeof(u16); len -= sizeof(u16);
...@@ -1696,30 +1696,30 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci) ...@@ -1696,30 +1696,30 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci)
ci->hwtype = devstat.hwtype; ci->hwtype = devstat.hwtype;
/* prep page for rule array and var array use */ /* prep page for rule array and var array use */
pg = (u8 *) __get_free_page(GFP_KERNEL); pg = (u8 *)__get_free_page(GFP_KERNEL);
if (!pg) if (!pg)
return -ENOMEM; return -ENOMEM;
rarray = pg; rarray = pg;
varray = pg + PAGE_SIZE/2; varray = pg + PAGE_SIZE / 2;
rlen = vlen = PAGE_SIZE/2; rlen = vlen = PAGE_SIZE / 2;
/* QF for this card/domain */ /* QF for this card/domain */
rc = cca_query_crypto_facility(cardnr, domain, "STATICSA", rc = cca_query_crypto_facility(cardnr, domain, "STATICSA",
rarray, &rlen, varray, &vlen); rarray, &rlen, varray, &vlen);
if (rc == 0 && rlen >= 10*8 && vlen >= 204) { if (rc == 0 && rlen >= 10 * 8 && vlen >= 204) {
memcpy(ci->serial, rarray, 8); memcpy(ci->serial, rarray, 8);
ci->new_asym_mk_state = (char) rarray[4*8]; ci->new_asym_mk_state = (char)rarray[4 * 8];
ci->cur_asym_mk_state = (char) rarray[5*8]; ci->cur_asym_mk_state = (char)rarray[5 * 8];
ci->old_asym_mk_state = (char) rarray[6*8]; ci->old_asym_mk_state = (char)rarray[6 * 8];
if (ci->old_asym_mk_state == '2') if (ci->old_asym_mk_state == '2')
memcpy(ci->old_asym_mkvp, varray + 64, 16); memcpy(ci->old_asym_mkvp, varray + 64, 16);
if (ci->cur_asym_mk_state == '2') if (ci->cur_asym_mk_state == '2')
memcpy(ci->cur_asym_mkvp, varray + 84, 16); memcpy(ci->cur_asym_mkvp, varray + 84, 16);
if (ci->new_asym_mk_state == '3') if (ci->new_asym_mk_state == '3')
memcpy(ci->new_asym_mkvp, varray + 104, 16); memcpy(ci->new_asym_mkvp, varray + 104, 16);
ci->new_aes_mk_state = (char) rarray[7*8]; ci->new_aes_mk_state = (char)rarray[7 * 8];
ci->cur_aes_mk_state = (char) rarray[8*8]; ci->cur_aes_mk_state = (char)rarray[8 * 8];
ci->old_aes_mk_state = (char) rarray[9*8]; ci->old_aes_mk_state = (char)rarray[9 * 8];
if (ci->old_aes_mk_state == '2') if (ci->old_aes_mk_state == '2')
memcpy(&ci->old_aes_mkvp, varray + 172, 8); memcpy(&ci->old_aes_mkvp, varray + 172, 8);
if (ci->cur_aes_mk_state == '2') if (ci->cur_aes_mk_state == '2')
...@@ -1730,13 +1730,13 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci) ...@@ -1730,13 +1730,13 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci)
} }
if (!found) if (!found)
goto out; goto out;
rlen = vlen = PAGE_SIZE/2; rlen = vlen = PAGE_SIZE / 2;
rc = cca_query_crypto_facility(cardnr, domain, "STATICSB", rc = cca_query_crypto_facility(cardnr, domain, "STATICSB",
rarray, &rlen, varray, &vlen); rarray, &rlen, varray, &vlen);
if (rc == 0 && rlen >= 13*8 && vlen >= 240) { if (rc == 0 && rlen >= 13 * 8 && vlen >= 240) {
ci->new_apka_mk_state = (char) rarray[10*8]; ci->new_apka_mk_state = (char)rarray[10 * 8];
ci->cur_apka_mk_state = (char) rarray[11*8]; ci->cur_apka_mk_state = (char)rarray[11 * 8];
ci->old_apka_mk_state = (char) rarray[12*8]; ci->old_apka_mk_state = (char)rarray[12 * 8];
if (ci->old_apka_mk_state == '2') if (ci->old_apka_mk_state == '2')
memcpy(&ci->old_apka_mkvp, varray + 208, 8); memcpy(&ci->old_apka_mkvp, varray + 208, 8);
if (ci->cur_apka_mk_state == '2') if (ci->cur_apka_mk_state == '2')
...@@ -1747,7 +1747,7 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci) ...@@ -1747,7 +1747,7 @@ static int fetch_cca_info(u16 cardnr, u16 domain, struct cca_info *ci)
} }
out: out:
free_page((unsigned long) pg); free_page((unsigned long)pg);
return found == 2 ? 0 : -ENOENT; return found == 2 ? 0 : -ENOENT;
} }
...@@ -1855,8 +1855,9 @@ static int findcard(u64 mkvp, u16 *pcardnr, u16 *pdomain, ...@@ -1855,8 +1855,9 @@ static int findcard(u64 mkvp, u16 *pcardnr, u16 *pdomain,
if (pdomain) if (pdomain)
*pdomain = dom; *pdomain = dom;
rc = (i < MAX_ZDEV_ENTRIES_EXT ? 0 : 1); rc = (i < MAX_ZDEV_ENTRIES_EXT ? 0 : 1);
} else } else {
rc = -ENODEV; rc = -ENODEV;
}
kvfree(device_status); kvfree(device_status);
return rc; return rc;
...@@ -1870,7 +1871,7 @@ int cca_findcard(const u8 *key, u16 *pcardnr, u16 *pdomain, int verify) ...@@ -1870,7 +1871,7 @@ int cca_findcard(const u8 *key, u16 *pcardnr, u16 *pdomain, int verify)
{ {
u64 mkvp; u64 mkvp;
int minhwtype = 0; int minhwtype = 0;
const struct keytoken_header *hdr = (struct keytoken_header *) key; const struct keytoken_header *hdr = (struct keytoken_header *)key;
if (hdr->type != TOKTYPE_CCA_INTERNAL) if (hdr->type != TOKTYPE_CCA_INTERNAL)
return -EINVAL; return -EINVAL;
...@@ -1963,7 +1964,7 @@ int cca_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain, ...@@ -1963,7 +1964,7 @@ int cca_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain,
} }
/* apqn passed all filtering criterons, add to the array */ /* apqn passed all filtering criterons, add to the array */
if (_nr_apqns < 256) if (_nr_apqns < 256)
_apqns[_nr_apqns++] = (((u16)card) << 16) | ((u16) dom); _apqns[_nr_apqns++] = (((u16)card) << 16) | ((u16)dom);
} }
/* nothing found ? */ /* nothing found ? */
......
...@@ -34,10 +34,11 @@ ...@@ -34,10 +34,11 @@
#define CEX3A_MAX_RESPONSE_SIZE 0x210 /* 512 bit modulus #define CEX3A_MAX_RESPONSE_SIZE 0x210 /* 512 bit modulus
* (max outputdatalength) + * (max outputdatalength) +
* type80_hdr*/ * type80_hdr
*/
#define CEX3A_MAX_MESSAGE_SIZE sizeof(struct type50_crb3_msg) #define CEX3A_MAX_MESSAGE_SIZE sizeof(struct type50_crb3_msg)
#define CEX2A_CLEANUP_TIME (15*HZ) #define CEX2A_CLEANUP_TIME (15 * HZ)
#define CEX3A_CLEANUP_TIME CEX2A_CLEANUP_TIME #define CEX3A_CLEANUP_TIME CEX2A_CLEANUP_TIME
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
...@@ -117,9 +118,8 @@ static int zcrypt_cex2a_card_probe(struct ap_device *ap_dev) ...@@ -117,9 +118,8 @@ static int zcrypt_cex2a_card_probe(struct ap_device *ap_dev)
zc->online = 1; zc->online = 1;
rc = zcrypt_card_register(zc); rc = zcrypt_card_register(zc);
if (rc) { if (rc)
zcrypt_card_free(zc); zcrypt_card_free(zc);
}
return rc; return rc;
} }
...@@ -176,9 +176,8 @@ static int zcrypt_cex2a_queue_probe(struct ap_device *ap_dev) ...@@ -176,9 +176,8 @@ static int zcrypt_cex2a_queue_probe(struct ap_device *ap_dev)
aq->request_timeout = CEX2A_CLEANUP_TIME; aq->request_timeout = CEX2A_CLEANUP_TIME;
dev_set_drvdata(&ap_dev->device, zq); dev_set_drvdata(&ap_dev->device, zq);
rc = zcrypt_queue_register(zq); rc = zcrypt_queue_register(zq);
if (rc) { if (rc)
zcrypt_queue_free(zq); zcrypt_queue_free(zq);
}
return rc; return rc;
} }
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
#define CEX2C_MAX_MOD_SIZE 256 /* 2048 bits */ #define CEX2C_MAX_MOD_SIZE 256 /* 2048 bits */
#define CEX3C_MIN_MOD_SIZE 16 /* 128 bits */ #define CEX3C_MIN_MOD_SIZE 16 /* 128 bits */
#define CEX3C_MAX_MOD_SIZE 512 /* 4096 bits */ #define CEX3C_MAX_MOD_SIZE 512 /* 4096 bits */
#define CEX2C_MAX_XCRB_MESSAGE_SIZE (12*1024) #define CEX2C_MAX_XCRB_MESSAGE_SIZE (12 * 1024)
#define CEX2C_CLEANUP_TIME (15*HZ) #define CEX2C_CLEANUP_TIME (15 * HZ)
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("CEX2C/CEX3C Cryptographic Coprocessor device driver, " \ MODULE_DESCRIPTION("CEX2C/CEX3C Cryptographic Coprocessor device driver, " \
...@@ -200,11 +200,11 @@ static int zcrypt_cex2c_rng_supported(struct ap_queue *aq) ...@@ -200,11 +200,11 @@ static int zcrypt_cex2c_rng_supported(struct ap_queue *aq)
int rc, i; int rc, i;
ap_init_message(&ap_msg); ap_init_message(&ap_msg);
ap_msg.msg = (void *) get_zeroed_page(GFP_KERNEL); ap_msg.msg = (void *)get_zeroed_page(GFP_KERNEL);
if (!ap_msg.msg) if (!ap_msg.msg)
return -ENOMEM; return -ENOMEM;
rng_type6CPRB_msgX(&ap_msg, 4, &domain); rng_type6cprb_msgx(&ap_msg, 4, &domain);
msg = ap_msg.msg; msg = ap_msg.msg;
msg->cprbx.domain = AP_QID_QUEUE(aq->qid); msg->cprbx.domain = AP_QID_QUEUE(aq->qid);
...@@ -233,7 +233,7 @@ static int zcrypt_cex2c_rng_supported(struct ap_queue *aq) ...@@ -233,7 +233,7 @@ static int zcrypt_cex2c_rng_supported(struct ap_queue *aq)
else else
rc = 0; rc = 0;
out_free: out_free:
free_page((unsigned long) ap_msg.msg); free_page((unsigned long)ap_msg.msg);
return rc; return rc;
} }
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* But the maximum time limit managed by the stomper code is set to 60sec. * But the maximum time limit managed by the stomper code is set to 60sec.
* Hence we have to wait at least that time period. * Hence we have to wait at least that time period.
*/ */
#define CEX4_CLEANUP_TIME (900*HZ) #define CEX4_CLEANUP_TIME (900 * HZ)
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("CEX[45678] Cryptographic Card device driver, " \ MODULE_DESCRIPTION("CEX[45678] Cryptographic Card device driver, " \
...@@ -364,8 +364,9 @@ static ssize_t ep11_mkvps_show(struct device *dev, ...@@ -364,8 +364,9 @@ static ssize_t ep11_mkvps_show(struct device *dev,
bin2hex(buf + n, di.cur_wkvp, sizeof(di.cur_wkvp)); bin2hex(buf + n, di.cur_wkvp, sizeof(di.cur_wkvp));
n += 2 * sizeof(di.cur_wkvp); n += 2 * sizeof(di.cur_wkvp);
n += scnprintf(buf + n, PAGE_SIZE - n, "\n"); n += scnprintf(buf + n, PAGE_SIZE - n, "\n");
} else } else {
n = scnprintf(buf, PAGE_SIZE, "WK CUR: - -\n"); n = scnprintf(buf, PAGE_SIZE, "WK CUR: - -\n");
}
if (di.new_wk_state == '0') { if (di.new_wk_state == '0') {
n += scnprintf(buf + n, PAGE_SIZE - n, "WK NEW: %s -\n", n += scnprintf(buf + n, PAGE_SIZE - n, "WK NEW: %s -\n",
...@@ -376,8 +377,9 @@ static ssize_t ep11_mkvps_show(struct device *dev, ...@@ -376,8 +377,9 @@ static ssize_t ep11_mkvps_show(struct device *dev,
bin2hex(buf + n, di.new_wkvp, sizeof(di.new_wkvp)); bin2hex(buf + n, di.new_wkvp, sizeof(di.new_wkvp));
n += 2 * sizeof(di.new_wkvp); n += 2 * sizeof(di.new_wkvp);
n += scnprintf(buf + n, PAGE_SIZE - n, "\n"); n += scnprintf(buf + n, PAGE_SIZE - n, "\n");
} else } else {
n += scnprintf(buf + n, PAGE_SIZE - n, "WK NEW: - -\n"); n += scnprintf(buf + n, PAGE_SIZE - n, "WK NEW: - -\n");
}
return n; return n;
} }
......
...@@ -119,8 +119,8 @@ static void __exit card_cache_free(void) ...@@ -119,8 +119,8 @@ static void __exit card_cache_free(void)
int ep11_check_aes_key_with_hdr(debug_info_t *dbg, int dbflvl, int ep11_check_aes_key_with_hdr(debug_info_t *dbg, int dbflvl,
const u8 *key, size_t keylen, int checkcpacfexp) const u8 *key, size_t keylen, int checkcpacfexp)
{ {
struct ep11kblob_header *hdr = (struct ep11kblob_header *) key; struct ep11kblob_header *hdr = (struct ep11kblob_header *)key;
struct ep11keyblob *kb = (struct ep11keyblob *) (key + sizeof(*hdr)); struct ep11keyblob *kb = (struct ep11keyblob *)(key + sizeof(*hdr));
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
...@@ -133,38 +133,38 @@ int ep11_check_aes_key_with_hdr(debug_info_t *dbg, int dbflvl, ...@@ -133,38 +133,38 @@ int ep11_check_aes_key_with_hdr(debug_info_t *dbg, int dbflvl,
if (hdr->type != TOKTYPE_NON_CCA) { if (hdr->type != TOKTYPE_NON_CCA) {
if (dbg) if (dbg)
DBF("%s key check failed, type 0x%02x != 0x%02x\n", DBF("%s key check failed, type 0x%02x != 0x%02x\n",
__func__, (int) hdr->type, TOKTYPE_NON_CCA); __func__, (int)hdr->type, TOKTYPE_NON_CCA);
return -EINVAL; return -EINVAL;
} }
if (hdr->hver != 0x00) { if (hdr->hver != 0x00) {
if (dbg) if (dbg)
DBF("%s key check failed, header version 0x%02x != 0x00\n", DBF("%s key check failed, header version 0x%02x != 0x00\n",
__func__, (int) hdr->hver); __func__, (int)hdr->hver);
return -EINVAL; return -EINVAL;
} }
if (hdr->version != TOKVER_EP11_AES_WITH_HEADER) { if (hdr->version != TOKVER_EP11_AES_WITH_HEADER) {
if (dbg) if (dbg)
DBF("%s key check failed, version 0x%02x != 0x%02x\n", DBF("%s key check failed, version 0x%02x != 0x%02x\n",
__func__, (int) hdr->version, TOKVER_EP11_AES_WITH_HEADER); __func__, (int)hdr->version, TOKVER_EP11_AES_WITH_HEADER);
return -EINVAL; return -EINVAL;
} }
if (hdr->len > keylen) { if (hdr->len > keylen) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d keylen %zu mismatch\n", DBF("%s key check failed, header len %d keylen %zu mismatch\n",
__func__, (int) hdr->len, keylen); __func__, (int)hdr->len, keylen);
return -EINVAL; return -EINVAL;
} }
if (hdr->len < sizeof(*hdr) + sizeof(*kb)) { if (hdr->len < sizeof(*hdr) + sizeof(*kb)) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d < %zu\n", DBF("%s key check failed, header len %d < %zu\n",
__func__, (int) hdr->len, sizeof(*hdr) + sizeof(*kb)); __func__, (int)hdr->len, sizeof(*hdr) + sizeof(*kb));
return -EINVAL; return -EINVAL;
} }
if (kb->version != EP11_STRUCT_MAGIC) { if (kb->version != EP11_STRUCT_MAGIC) {
if (dbg) if (dbg)
DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n", DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n",
__func__, (int) kb->version, EP11_STRUCT_MAGIC); __func__, (int)kb->version, EP11_STRUCT_MAGIC);
return -EINVAL; return -EINVAL;
} }
if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) { if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) {
...@@ -186,8 +186,8 @@ EXPORT_SYMBOL(ep11_check_aes_key_with_hdr); ...@@ -186,8 +186,8 @@ EXPORT_SYMBOL(ep11_check_aes_key_with_hdr);
int ep11_check_ecc_key_with_hdr(debug_info_t *dbg, int dbflvl, int ep11_check_ecc_key_with_hdr(debug_info_t *dbg, int dbflvl,
const u8 *key, size_t keylen, int checkcpacfexp) const u8 *key, size_t keylen, int checkcpacfexp)
{ {
struct ep11kblob_header *hdr = (struct ep11kblob_header *) key; struct ep11kblob_header *hdr = (struct ep11kblob_header *)key;
struct ep11keyblob *kb = (struct ep11keyblob *) (key + sizeof(*hdr)); struct ep11keyblob *kb = (struct ep11keyblob *)(key + sizeof(*hdr));
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
...@@ -200,38 +200,38 @@ int ep11_check_ecc_key_with_hdr(debug_info_t *dbg, int dbflvl, ...@@ -200,38 +200,38 @@ int ep11_check_ecc_key_with_hdr(debug_info_t *dbg, int dbflvl,
if (hdr->type != TOKTYPE_NON_CCA) { if (hdr->type != TOKTYPE_NON_CCA) {
if (dbg) if (dbg)
DBF("%s key check failed, type 0x%02x != 0x%02x\n", DBF("%s key check failed, type 0x%02x != 0x%02x\n",
__func__, (int) hdr->type, TOKTYPE_NON_CCA); __func__, (int)hdr->type, TOKTYPE_NON_CCA);
return -EINVAL; return -EINVAL;
} }
if (hdr->hver != 0x00) { if (hdr->hver != 0x00) {
if (dbg) if (dbg)
DBF("%s key check failed, header version 0x%02x != 0x00\n", DBF("%s key check failed, header version 0x%02x != 0x00\n",
__func__, (int) hdr->hver); __func__, (int)hdr->hver);
return -EINVAL; return -EINVAL;
} }
if (hdr->version != TOKVER_EP11_ECC_WITH_HEADER) { if (hdr->version != TOKVER_EP11_ECC_WITH_HEADER) {
if (dbg) if (dbg)
DBF("%s key check failed, version 0x%02x != 0x%02x\n", DBF("%s key check failed, version 0x%02x != 0x%02x\n",
__func__, (int) hdr->version, TOKVER_EP11_ECC_WITH_HEADER); __func__, (int)hdr->version, TOKVER_EP11_ECC_WITH_HEADER);
return -EINVAL; return -EINVAL;
} }
if (hdr->len > keylen) { if (hdr->len > keylen) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d keylen %zu mismatch\n", DBF("%s key check failed, header len %d keylen %zu mismatch\n",
__func__, (int) hdr->len, keylen); __func__, (int)hdr->len, keylen);
return -EINVAL; return -EINVAL;
} }
if (hdr->len < sizeof(*hdr) + sizeof(*kb)) { if (hdr->len < sizeof(*hdr) + sizeof(*kb)) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d < %zu\n", DBF("%s key check failed, header len %d < %zu\n",
__func__, (int) hdr->len, sizeof(*hdr) + sizeof(*kb)); __func__, (int)hdr->len, sizeof(*hdr) + sizeof(*kb));
return -EINVAL; return -EINVAL;
} }
if (kb->version != EP11_STRUCT_MAGIC) { if (kb->version != EP11_STRUCT_MAGIC) {
if (dbg) if (dbg)
DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n", DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n",
__func__, (int) kb->version, EP11_STRUCT_MAGIC); __func__, (int)kb->version, EP11_STRUCT_MAGIC);
return -EINVAL; return -EINVAL;
} }
if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) { if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) {
...@@ -254,7 +254,7 @@ EXPORT_SYMBOL(ep11_check_ecc_key_with_hdr); ...@@ -254,7 +254,7 @@ EXPORT_SYMBOL(ep11_check_ecc_key_with_hdr);
int ep11_check_aes_key(debug_info_t *dbg, int dbflvl, int ep11_check_aes_key(debug_info_t *dbg, int dbflvl,
const u8 *key, size_t keylen, int checkcpacfexp) const u8 *key, size_t keylen, int checkcpacfexp)
{ {
struct ep11keyblob *kb = (struct ep11keyblob *) key; struct ep11keyblob *kb = (struct ep11keyblob *)key;
#define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__) #define DBF(...) debug_sprintf_event(dbg, dbflvl, ##__VA_ARGS__)
...@@ -267,32 +267,32 @@ int ep11_check_aes_key(debug_info_t *dbg, int dbflvl, ...@@ -267,32 +267,32 @@ int ep11_check_aes_key(debug_info_t *dbg, int dbflvl,
if (kb->head.type != TOKTYPE_NON_CCA) { if (kb->head.type != TOKTYPE_NON_CCA) {
if (dbg) if (dbg)
DBF("%s key check failed, type 0x%02x != 0x%02x\n", DBF("%s key check failed, type 0x%02x != 0x%02x\n",
__func__, (int) kb->head.type, TOKTYPE_NON_CCA); __func__, (int)kb->head.type, TOKTYPE_NON_CCA);
return -EINVAL; return -EINVAL;
} }
if (kb->head.version != TOKVER_EP11_AES) { if (kb->head.version != TOKVER_EP11_AES) {
if (dbg) if (dbg)
DBF("%s key check failed, version 0x%02x != 0x%02x\n", DBF("%s key check failed, version 0x%02x != 0x%02x\n",
__func__, (int) kb->head.version, TOKVER_EP11_AES); __func__, (int)kb->head.version, TOKVER_EP11_AES);
return -EINVAL; return -EINVAL;
} }
if (kb->head.len > keylen) { if (kb->head.len > keylen) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d keylen %zu mismatch\n", DBF("%s key check failed, header len %d keylen %zu mismatch\n",
__func__, (int) kb->head.len, keylen); __func__, (int)kb->head.len, keylen);
return -EINVAL; return -EINVAL;
} }
if (kb->head.len < sizeof(*kb)) { if (kb->head.len < sizeof(*kb)) {
if (dbg) if (dbg)
DBF("%s key check failed, header len %d < %zu\n", DBF("%s key check failed, header len %d < %zu\n",
__func__, (int) kb->head.len, sizeof(*kb)); __func__, (int)kb->head.len, sizeof(*kb));
return -EINVAL; return -EINVAL;
} }
if (kb->version != EP11_STRUCT_MAGIC) { if (kb->version != EP11_STRUCT_MAGIC) {
if (dbg) if (dbg)
DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n", DBF("%s key check failed, blob magic 0x%04x != 0x%04x\n",
__func__, (int) kb->version, EP11_STRUCT_MAGIC); __func__, (int)kb->version, EP11_STRUCT_MAGIC);
return -EINVAL; return -EINVAL;
} }
if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) { if (checkcpacfexp && !(kb->attr & EP11_BLOB_PKEY_EXTRACTABLE)) {
...@@ -347,11 +347,11 @@ static int asn1tag_write(u8 *ptr, u8 tag, const u8 *pvalue, u16 valuelen) ...@@ -347,11 +347,11 @@ static int asn1tag_write(u8 *ptr, u8 tag, const u8 *pvalue, u16 valuelen)
} }
if (valuelen > 127) { if (valuelen > 127) {
ptr[1] = 0x81; ptr[1] = 0x81;
ptr[2] = (u8) valuelen; ptr[2] = (u8)valuelen;
memcpy(ptr + 3, pvalue, valuelen); memcpy(ptr + 3, pvalue, valuelen);
return 3 + valuelen; return 3 + valuelen;
} }
ptr[1] = (u8) valuelen; ptr[1] = (u8)valuelen;
memcpy(ptr + 2, pvalue, valuelen); memcpy(ptr + 2, pvalue, valuelen);
return 2 + valuelen; return 2 + valuelen;
} }
...@@ -389,11 +389,11 @@ static inline void prep_urb(struct ep11_urb *u, ...@@ -389,11 +389,11 @@ static inline void prep_urb(struct ep11_urb *u,
struct ep11_cprb *req, size_t req_len, struct ep11_cprb *req, size_t req_len,
struct ep11_cprb *rep, size_t rep_len) struct ep11_cprb *rep, size_t rep_len)
{ {
u->targets = (u8 __user *) t; u->targets = (u8 __user *)t;
u->targets_num = nt; u->targets_num = nt;
u->req = (u8 __user *) req; u->req = (u8 __user *)req;
u->req_len = req_len; u->req_len = req_len;
u->resp = (u8 __user *) rep; u->resp = (u8 __user *)rep;
u->resp_len = rep_len; u->resp_len = rep_len;
} }
...@@ -462,7 +462,6 @@ static int check_reply_pl(const u8 *pl, const char *func) ...@@ -462,7 +462,6 @@ static int check_reply_pl(const u8 *pl, const char *func)
return 0; return 0;
} }
/* /*
* Helper function which does an ep11 query with given query type. * Helper function which does an ep11 query with given query type.
*/ */
...@@ -496,7 +495,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type, ...@@ -496,7 +495,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type,
req = alloc_cprb(sizeof(struct ep11_info_req_pl)); req = alloc_cprb(sizeof(struct ep11_info_req_pl));
if (!req) if (!req)
goto out; goto out;
req_pl = (struct ep11_info_req_pl *) (((u8 *) req) + sizeof(*req)); req_pl = (struct ep11_info_req_pl *)(((u8 *)req) + sizeof(*req));
prep_head(&req_pl->head, sizeof(*req_pl), api, 38); /* get xcp info */ prep_head(&req_pl->head, sizeof(*req_pl), api, 38); /* get xcp info */
req_pl->query_type_tag = 0x04; req_pl->query_type_tag = 0x04;
req_pl->query_type_len = sizeof(u32); req_pl->query_type_len = sizeof(u32);
...@@ -508,10 +507,10 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type, ...@@ -508,10 +507,10 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type,
rep = alloc_cprb(sizeof(struct ep11_info_rep_pl) + buflen); rep = alloc_cprb(sizeof(struct ep11_info_rep_pl) + buflen);
if (!rep) if (!rep)
goto out; goto out;
rep_pl = (struct ep11_info_rep_pl *) (((u8 *) rep) + sizeof(*rep)); rep_pl = (struct ep11_info_rep_pl *)(((u8 *)rep) + sizeof(*rep));
/* urb and target */ /* urb and target */
urb = kmalloc(sizeof(struct ep11_urb), GFP_KERNEL); urb = kmalloc(sizeof(*urb), GFP_KERNEL);
if (!urb) if (!urb)
goto out; goto out;
target.ap_id = cardnr; target.ap_id = cardnr;
...@@ -524,7 +523,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type, ...@@ -524,7 +523,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n", "%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__func__, (int) cardnr, (int) domain, rc); __func__, (int)cardnr, (int)domain, rc);
goto out; goto out;
} }
...@@ -543,7 +542,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type, ...@@ -543,7 +542,7 @@ static int ep11_query_info(u16 cardnr, u16 domain, u32 query_type,
goto out; goto out;
} }
memcpy(buf, ((u8 *) rep_pl) + sizeof(*rep_pl), rep_pl->data_len); memcpy(buf, ((u8 *)rep_pl) + sizeof(*rep_pl), rep_pl->data_len);
out: out:
kfree(req); kfree(req);
...@@ -592,7 +591,7 @@ int ep11_get_card_info(u16 card, struct ep11_card_info *info, int verify) ...@@ -592,7 +591,7 @@ int ep11_get_card_info(u16 card, struct ep11_card_info *info, int verify)
return -ENOMEM; return -ENOMEM;
rc = ep11_query_info(card, AUTOSEL_DOM, rc = ep11_query_info(card, AUTOSEL_DOM,
0x01 /* module info query */, 0x01 /* module info query */,
sizeof(*pmqi), (u8 *) pmqi); sizeof(*pmqi), (u8 *)pmqi);
if (rc) { if (rc) {
if (rc == -ENODEV) if (rc == -ENODEV)
card_cache_scrub(card); card_cache_scrub(card);
...@@ -632,7 +631,7 @@ int ep11_get_domain_info(u16 card, u16 domain, struct ep11_domain_info *info) ...@@ -632,7 +631,7 @@ int ep11_get_domain_info(u16 card, u16 domain, struct ep11_domain_info *info)
return -ENOMEM; return -ENOMEM;
rc = ep11_query_info(card, domain, 0x03 /* domain info query */, rc = ep11_query_info(card, domain, 0x03 /* domain info query */,
sizeof(*p_dom_info), (u8 *) p_dom_info); sizeof(*p_dom_info), (u8 *)p_dom_info);
if (rc) if (rc)
goto out; goto out;
...@@ -644,8 +643,8 @@ int ep11_get_domain_info(u16 card, u16 domain, struct ep11_domain_info *info) ...@@ -644,8 +643,8 @@ int ep11_get_domain_info(u16 card, u16 domain, struct ep11_domain_info *info)
info->cur_wk_state = '1'; info->cur_wk_state = '1';
memcpy(info->cur_wkvp, p_dom_info->cur_WK_VP, 32); memcpy(info->cur_wkvp, p_dom_info->cur_WK_VP, 32);
} }
if (p_dom_info->dom_flags & 0x04 /* new wk present */ if (p_dom_info->dom_flags & 0x04 || /* new wk present */
|| p_dom_info->dom_flags & 0x08 /* new wk committed */) { p_dom_info->dom_flags & 0x08 /* new wk committed */) {
info->new_wk_state = info->new_wk_state =
p_dom_info->dom_flags & 0x08 ? '2' : '1'; p_dom_info->dom_flags & 0x08 ? '2' : '1';
memcpy(info->new_wkvp, p_dom_info->new_WK_VP, 32); memcpy(info->new_wkvp, p_dom_info->new_WK_VP, 32);
...@@ -722,7 +721,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -722,7 +721,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
req = alloc_cprb(sizeof(struct keygen_req_pl)); req = alloc_cprb(sizeof(struct keygen_req_pl));
if (!req) if (!req)
goto out; goto out;
req_pl = (struct keygen_req_pl *) (((u8 *) req) + sizeof(*req)); req_pl = (struct keygen_req_pl *)(((u8 *)req) + sizeof(*req));
api = (!keygenflags || keygenflags & 0x00200000) ? 4 : 1; api = (!keygenflags || keygenflags & 0x00200000) ? 4 : 1;
prep_head(&req_pl->head, sizeof(*req_pl), api, 21); /* GenerateKey */ prep_head(&req_pl->head, sizeof(*req_pl), api, 21); /* GenerateKey */
req_pl->var_tag = 0x04; req_pl->var_tag = 0x04;
...@@ -746,10 +745,10 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -746,10 +745,10 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
rep = alloc_cprb(sizeof(struct keygen_rep_pl)); rep = alloc_cprb(sizeof(struct keygen_rep_pl));
if (!rep) if (!rep)
goto out; goto out;
rep_pl = (struct keygen_rep_pl *) (((u8 *) rep) + sizeof(*rep)); rep_pl = (struct keygen_rep_pl *)(((u8 *)rep) + sizeof(*rep));
/* urb and target */ /* urb and target */
urb = kmalloc(sizeof(struct ep11_urb), GFP_KERNEL); urb = kmalloc(sizeof(*urb), GFP_KERNEL);
if (!urb) if (!urb)
goto out; goto out;
target.ap_id = card; target.ap_id = card;
...@@ -762,7 +761,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -762,7 +761,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n", "%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__func__, (int) card, (int) domain, rc); __func__, (int)card, (int)domain, rc);
goto out; goto out;
} }
...@@ -784,7 +783,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -784,7 +783,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
/* copy key blob and set header values */ /* copy key blob and set header values */
memcpy(keybuf, rep_pl->data, rep_pl->data_len); memcpy(keybuf, rep_pl->data, rep_pl->data_len);
*keybufsize = rep_pl->data_len; *keybufsize = rep_pl->data_len;
kb = (struct ep11keyblob *) keybuf; kb = (struct ep11keyblob *)keybuf;
kb->head.type = TOKTYPE_NON_CCA; kb->head.type = TOKTYPE_NON_CCA;
kb->head.len = rep_pl->data_len; kb->head.len = rep_pl->data_len;
kb->head.version = TOKVER_EP11_AES; kb->head.version = TOKVER_EP11_AES;
...@@ -844,7 +843,7 @@ static int ep11_cryptsingle(u16 card, u16 domain, ...@@ -844,7 +843,7 @@ static int ep11_cryptsingle(u16 card, u16 domain,
req = alloc_cprb(req_pl_size); req = alloc_cprb(req_pl_size);
if (!req) if (!req)
goto out; goto out;
req_pl = (struct crypt_req_pl *) (((u8 *) req) + sizeof(*req)); req_pl = (struct crypt_req_pl *)(((u8 *)req) + sizeof(*req));
prep_head(&req_pl->head, req_pl_size, api, (mode ? 20 : 19)); prep_head(&req_pl->head, req_pl_size, api, (mode ? 20 : 19));
req_pl->var_tag = 0x04; req_pl->var_tag = 0x04;
req_pl->var_len = sizeof(u32); req_pl->var_len = sizeof(u32);
...@@ -852,7 +851,7 @@ static int ep11_cryptsingle(u16 card, u16 domain, ...@@ -852,7 +851,7 @@ static int ep11_cryptsingle(u16 card, u16 domain,
req_pl->mech_tag = 0x04; req_pl->mech_tag = 0x04;
req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0); req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0);
req_pl->mech = (mech ? mech : 0x00001085); /* CKM_AES_CBC_PAD */ req_pl->mech = (mech ? mech : 0x00001085); /* CKM_AES_CBC_PAD */
p = ((u8 *) req_pl) + sizeof(*req_pl); p = ((u8 *)req_pl) + sizeof(*req_pl);
if (iv) { if (iv) {
memcpy(p, iv, 16); memcpy(p, iv, 16);
p += 16; p += 16;
...@@ -866,10 +865,10 @@ static int ep11_cryptsingle(u16 card, u16 domain, ...@@ -866,10 +865,10 @@ static int ep11_cryptsingle(u16 card, u16 domain,
rep = alloc_cprb(rep_pl_size); rep = alloc_cprb(rep_pl_size);
if (!rep) if (!rep)
goto out; goto out;
rep_pl = (struct crypt_rep_pl *) (((u8 *) rep) + sizeof(*rep)); rep_pl = (struct crypt_rep_pl *)(((u8 *)rep) + sizeof(*rep));
/* urb and target */ /* urb and target */
urb = kmalloc(sizeof(struct ep11_urb), GFP_KERNEL); urb = kmalloc(sizeof(*urb), GFP_KERNEL);
if (!urb) if (!urb)
goto out; goto out;
target.ap_id = card; target.ap_id = card;
...@@ -882,7 +881,7 @@ static int ep11_cryptsingle(u16 card, u16 domain, ...@@ -882,7 +881,7 @@ static int ep11_cryptsingle(u16 card, u16 domain,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n", "%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__func__, (int) card, (int) domain, rc); __func__, (int)card, (int)domain, rc);
goto out; goto out;
} }
...@@ -894,13 +893,13 @@ static int ep11_cryptsingle(u16 card, u16 domain, ...@@ -894,13 +893,13 @@ static int ep11_cryptsingle(u16 card, u16 domain,
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
p = ((u8 *) rep_pl) + sizeof(*rep_pl); p = ((u8 *)rep_pl) + sizeof(*rep_pl);
if (rep_pl->data_lenfmt <= 127) if (rep_pl->data_lenfmt <= 127) {
n = rep_pl->data_lenfmt; n = rep_pl->data_lenfmt;
else if (rep_pl->data_lenfmt == 0x81) } else if (rep_pl->data_lenfmt == 0x81) {
n = *p++; n = *p++;
else if (rep_pl->data_lenfmt == 0x82) { } else if (rep_pl->data_lenfmt == 0x82) {
n = *((u16 *) p); n = *((u16 *)p);
p += 2; p += 2;
} else { } else {
DEBUG_ERR("%s unknown reply data length format 0x%02hhx\n", DEBUG_ERR("%s unknown reply data length format 0x%02hhx\n",
...@@ -978,7 +977,7 @@ static int ep11_unwrapkey(u16 card, u16 domain, ...@@ -978,7 +977,7 @@ static int ep11_unwrapkey(u16 card, u16 domain,
req = alloc_cprb(req_pl_size); req = alloc_cprb(req_pl_size);
if (!req) if (!req)
goto out; goto out;
req_pl = (struct uw_req_pl *) (((u8 *) req) + sizeof(*req)); req_pl = (struct uw_req_pl *)(((u8 *)req) + sizeof(*req));
api = (!keygenflags || keygenflags & 0x00200000) ? 4 : 1; api = (!keygenflags || keygenflags & 0x00200000) ? 4 : 1;
prep_head(&req_pl->head, req_pl_size, api, 34); /* UnwrapKey */ prep_head(&req_pl->head, req_pl_size, api, 34); /* UnwrapKey */
req_pl->attr_tag = 0x04; req_pl->attr_tag = 0x04;
...@@ -994,7 +993,7 @@ static int ep11_unwrapkey(u16 card, u16 domain, ...@@ -994,7 +993,7 @@ static int ep11_unwrapkey(u16 card, u16 domain,
req_pl->mech_tag = 0x04; req_pl->mech_tag = 0x04;
req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0); req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0);
req_pl->mech = (mech ? mech : 0x00001085); /* CKM_AES_CBC_PAD */ req_pl->mech = (mech ? mech : 0x00001085); /* CKM_AES_CBC_PAD */
p = ((u8 *) req_pl) + sizeof(*req_pl); p = ((u8 *)req_pl) + sizeof(*req_pl);
if (iv) { if (iv) {
memcpy(p, iv, 16); memcpy(p, iv, 16);
p += 16; p += 16;
...@@ -1014,10 +1013,10 @@ static int ep11_unwrapkey(u16 card, u16 domain, ...@@ -1014,10 +1013,10 @@ static int ep11_unwrapkey(u16 card, u16 domain,
rep = alloc_cprb(sizeof(struct uw_rep_pl)); rep = alloc_cprb(sizeof(struct uw_rep_pl));
if (!rep) if (!rep)
goto out; goto out;
rep_pl = (struct uw_rep_pl *) (((u8 *) rep) + sizeof(*rep)); rep_pl = (struct uw_rep_pl *)(((u8 *)rep) + sizeof(*rep));
/* urb and target */ /* urb and target */
urb = kmalloc(sizeof(struct ep11_urb), GFP_KERNEL); urb = kmalloc(sizeof(*urb), GFP_KERNEL);
if (!urb) if (!urb)
goto out; goto out;
target.ap_id = card; target.ap_id = card;
...@@ -1030,7 +1029,7 @@ static int ep11_unwrapkey(u16 card, u16 domain, ...@@ -1030,7 +1029,7 @@ static int ep11_unwrapkey(u16 card, u16 domain,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n", "%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__func__, (int) card, (int) domain, rc); __func__, (int)card, (int)domain, rc);
goto out; goto out;
} }
...@@ -1052,7 +1051,7 @@ static int ep11_unwrapkey(u16 card, u16 domain, ...@@ -1052,7 +1051,7 @@ static int ep11_unwrapkey(u16 card, u16 domain,
/* copy key blob and set header values */ /* copy key blob and set header values */
memcpy(keybuf, rep_pl->data, rep_pl->data_len); memcpy(keybuf, rep_pl->data, rep_pl->data_len);
*keybufsize = rep_pl->data_len; *keybufsize = rep_pl->data_len;
kb = (struct ep11keyblob *) keybuf; kb = (struct ep11keyblob *)keybuf;
kb->head.type = TOKTYPE_NON_CCA; kb->head.type = TOKTYPE_NON_CCA;
kb->head.len = rep_pl->data_len; kb->head.len = rep_pl->data_len;
kb->head.version = TOKVER_EP11_AES; kb->head.version = TOKVER_EP11_AES;
...@@ -1105,7 +1104,7 @@ static int ep11_wrapkey(u16 card, u16 domain, ...@@ -1105,7 +1104,7 @@ static int ep11_wrapkey(u16 card, u16 domain,
u8 *p; u8 *p;
/* maybe the session field holds a header with key info */ /* maybe the session field holds a header with key info */
kb = (struct ep11keyblob *) key; kb = (struct ep11keyblob *)key;
if (kb->head.type == TOKTYPE_NON_CCA && if (kb->head.type == TOKTYPE_NON_CCA &&
kb->head.version == TOKVER_EP11_AES) { kb->head.version == TOKVER_EP11_AES) {
has_header = true; has_header = true;
...@@ -1120,7 +1119,7 @@ static int ep11_wrapkey(u16 card, u16 domain, ...@@ -1120,7 +1119,7 @@ static int ep11_wrapkey(u16 card, u16 domain,
goto out; goto out;
if (!mech || mech == 0x80060001) if (!mech || mech == 0x80060001)
req->flags |= 0x20; /* CPACF_WRAP needs special bit */ req->flags |= 0x20; /* CPACF_WRAP needs special bit */
req_pl = (struct wk_req_pl *) (((u8 *) req) + sizeof(*req)); req_pl = (struct wk_req_pl *)(((u8 *)req) + sizeof(*req));
api = (!mech || mech == 0x80060001) ? 4 : 1; /* CKM_IBM_CPACF_WRAP */ api = (!mech || mech == 0x80060001) ? 4 : 1; /* CKM_IBM_CPACF_WRAP */
prep_head(&req_pl->head, req_pl_size, api, 33); /* WrapKey */ prep_head(&req_pl->head, req_pl_size, api, 33); /* WrapKey */
req_pl->var_tag = 0x04; req_pl->var_tag = 0x04;
...@@ -1129,7 +1128,7 @@ static int ep11_wrapkey(u16 card, u16 domain, ...@@ -1129,7 +1128,7 @@ static int ep11_wrapkey(u16 card, u16 domain,
req_pl->mech_tag = 0x04; req_pl->mech_tag = 0x04;
req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0); req_pl->mech_len = sizeof(u32) + (iv ? 16 : 0);
req_pl->mech = (mech ? mech : 0x80060001); /* CKM_IBM_CPACF_WRAP */ req_pl->mech = (mech ? mech : 0x80060001); /* CKM_IBM_CPACF_WRAP */
p = ((u8 *) req_pl) + sizeof(*req_pl); p = ((u8 *)req_pl) + sizeof(*req_pl);
if (iv) { if (iv) {
memcpy(p, iv, 16); memcpy(p, iv, 16);
p += 16; p += 16;
...@@ -1152,10 +1151,10 @@ static int ep11_wrapkey(u16 card, u16 domain, ...@@ -1152,10 +1151,10 @@ static int ep11_wrapkey(u16 card, u16 domain,
rep = alloc_cprb(sizeof(struct wk_rep_pl)); rep = alloc_cprb(sizeof(struct wk_rep_pl));
if (!rep) if (!rep)
goto out; goto out;
rep_pl = (struct wk_rep_pl *) (((u8 *) rep) + sizeof(*rep)); rep_pl = (struct wk_rep_pl *)(((u8 *)rep) + sizeof(*rep));
/* urb and target */ /* urb and target */
urb = kmalloc(sizeof(struct ep11_urb), GFP_KERNEL); urb = kmalloc(sizeof(*urb), GFP_KERNEL);
if (!urb) if (!urb)
goto out; goto out;
target.ap_id = card; target.ap_id = card;
...@@ -1168,7 +1167,7 @@ static int ep11_wrapkey(u16 card, u16 domain, ...@@ -1168,7 +1167,7 @@ static int ep11_wrapkey(u16 card, u16 domain,
if (rc) { if (rc) {
DEBUG_ERR( DEBUG_ERR(
"%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n", "%s zcrypt_send_ep11_cprb(card=%d dom=%d) failed, rc=%d\n",
__func__, (int) card, (int) domain, rc); __func__, (int)card, (int)domain, rc);
goto out; goto out;
} }
...@@ -1206,9 +1205,9 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -1206,9 +1205,9 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
u8 encbuf[64], *kek = NULL; u8 encbuf[64], *kek = NULL;
size_t clrkeylen, keklen, encbuflen = sizeof(encbuf); size_t clrkeylen, keklen, encbuflen = sizeof(encbuf);
if (keybitsize == 128 || keybitsize == 192 || keybitsize == 256) if (keybitsize == 128 || keybitsize == 192 || keybitsize == 256) {
clrkeylen = keybitsize / 8; clrkeylen = keybitsize / 8;
else { } else {
DEBUG_ERR( DEBUG_ERR(
"%s unknown/unsupported keybitsize %d\n", "%s unknown/unsupported keybitsize %d\n",
__func__, keybitsize); __func__, keybitsize);
...@@ -1233,7 +1232,7 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -1233,7 +1232,7 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
__func__, rc); __func__, rc);
goto out; goto out;
} }
kb = (struct ep11keyblob *) kek; kb = (struct ep11keyblob *)kek;
memset(&kb->head, 0, sizeof(kb->head)); memset(&kb->head, 0, sizeof(kb->head));
/* Step 2: encrypt clear key value with the kek key */ /* Step 2: encrypt clear key value with the kek key */
...@@ -1282,17 +1281,17 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1282,17 +1281,17 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
struct ep11kblob_header *hdr; struct ep11kblob_header *hdr;
/* key with or without header ? */ /* key with or without header ? */
hdr = (struct ep11kblob_header *) keyblob; hdr = (struct ep11kblob_header *)keyblob;
if (hdr->type == TOKTYPE_NON_CCA if (hdr->type == TOKTYPE_NON_CCA &&
&& (hdr->version == TOKVER_EP11_AES_WITH_HEADER (hdr->version == TOKVER_EP11_AES_WITH_HEADER ||
|| hdr->version == TOKVER_EP11_ECC_WITH_HEADER) hdr->version == TOKVER_EP11_ECC_WITH_HEADER) &&
&& is_ep11_keyblob(keyblob + sizeof(struct ep11kblob_header))) { is_ep11_keyblob(keyblob + sizeof(struct ep11kblob_header))) {
/* EP11 AES or ECC key with header */ /* EP11 AES or ECC key with header */
key = keyblob + sizeof(struct ep11kblob_header); key = keyblob + sizeof(struct ep11kblob_header);
keylen = hdr->len - sizeof(struct ep11kblob_header); keylen = hdr->len - sizeof(struct ep11kblob_header);
} else if (hdr->type == TOKTYPE_NON_CCA } else if (hdr->type == TOKTYPE_NON_CCA &&
&& hdr->version == TOKVER_EP11_AES hdr->version == TOKVER_EP11_AES &&
&& is_ep11_keyblob(keyblob)) { is_ep11_keyblob(keyblob)) {
/* EP11 AES key (old style) */ /* EP11 AES key (old style) */
key = keyblob; key = keyblob;
keylen = hdr->len; keylen = hdr->len;
...@@ -1300,8 +1299,9 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1300,8 +1299,9 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
/* raw EP11 key blob */ /* raw EP11 key blob */
key = keyblob; key = keyblob;
keylen = keybloblen; keylen = keybloblen;
} else } else {
return -EINVAL; return -EINVAL;
}
/* alloc temp working buffer */ /* alloc temp working buffer */
wkbuflen = (keylen + AES_BLOCK_SIZE) & (~(AES_BLOCK_SIZE - 1)); wkbuflen = (keylen + AES_BLOCK_SIZE) & (~(AES_BLOCK_SIZE - 1));
...@@ -1318,12 +1318,12 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1318,12 +1318,12 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
__func__, rc); __func__, rc);
goto out; goto out;
} }
wki = (struct wk_info *) wkbuf; wki = (struct wk_info *)wkbuf;
/* check struct version and pkey type */ /* check struct version and pkey type */
if (wki->version != 1 || wki->pkeytype < 1 || wki->pkeytype > 5) { if (wki->version != 1 || wki->pkeytype < 1 || wki->pkeytype > 5) {
DEBUG_ERR("%s wk info version %d or pkeytype %d mismatch.\n", DEBUG_ERR("%s wk info version %d or pkeytype %d mismatch.\n",
__func__, (int) wki->version, (int) wki->pkeytype); __func__, (int)wki->version, (int)wki->pkeytype);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
...@@ -1332,24 +1332,24 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1332,24 +1332,24 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
switch (wki->pkeytype) { switch (wki->pkeytype) {
case 1: /* AES */ case 1: /* AES */
switch (wki->pkeysize) { switch (wki->pkeysize) {
case 16+32: case 16 + 32:
/* AES 128 protected key */ /* AES 128 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_128; *protkeytype = PKEY_KEYTYPE_AES_128;
break; break;
case 24+32: case 24 + 32:
/* AES 192 protected key */ /* AES 192 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_192; *protkeytype = PKEY_KEYTYPE_AES_192;
break; break;
case 32+32: case 32 + 32:
/* AES 256 protected key */ /* AES 256 protected key */
if (protkeytype) if (protkeytype)
*protkeytype = PKEY_KEYTYPE_AES_256; *protkeytype = PKEY_KEYTYPE_AES_256;
break; break;
default: default:
DEBUG_ERR("%s unknown/unsupported AES pkeysize %d\n", DEBUG_ERR("%s unknown/unsupported AES pkeysize %d\n",
__func__, (int) wki->pkeysize); __func__, (int)wki->pkeysize);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
...@@ -1363,7 +1363,7 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1363,7 +1363,7 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
case 2: /* TDES */ case 2: /* TDES */
default: default:
DEBUG_ERR("%s unknown/unsupported key type %d\n", DEBUG_ERR("%s unknown/unsupported key type %d\n",
__func__, (int) wki->pkeytype); __func__, (int)wki->pkeytype);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
...@@ -1445,7 +1445,7 @@ int ep11_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain, ...@@ -1445,7 +1445,7 @@ int ep11_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain,
} }
/* apqn passed all filtering criterons, add to the array */ /* apqn passed all filtering criterons, add to the array */
if (_nr_apqns < 256) if (_nr_apqns < 256)
_apqns[_nr_apqns++] = (((u16)card) << 16) | ((u16) dom); _apqns[_nr_apqns++] = (((u16)card) << 16) | ((u16)dom);
} }
/* nothing found ? */ /* nothing found ? */
......
...@@ -50,7 +50,7 @@ struct ep11keyblob { ...@@ -50,7 +50,7 @@ struct ep11keyblob {
/* check ep11 key magic to find out if this is an ep11 key blob */ /* check ep11 key magic to find out if this is an ep11 key blob */
static inline bool is_ep11_keyblob(const u8 *key) static inline bool is_ep11_keyblob(const u8 *key)
{ {
struct ep11keyblob *kb = (struct ep11keyblob *) key; struct ep11keyblob *kb = (struct ep11keyblob *)key;
return (kb->version == EP11_STRUCT_MAGIC); return (kb->version == EP11_STRUCT_MAGIC);
} }
......
...@@ -121,10 +121,11 @@ static inline int convert_error(struct zcrypt_queue *zq, ...@@ -121,10 +121,11 @@ static inline int convert_error(struct zcrypt_queue *zq,
ZCRYPT_DBF_WARN( ZCRYPT_DBF_WARN(
"%s dev=%02x.%04x RY=0x%02x apfs=0x%x => bus rescan, rc=EAGAIN\n", "%s dev=%02x.%04x RY=0x%02x apfs=0x%x => bus rescan, rc=EAGAIN\n",
__func__, card, queue, ehdr->reply_code, apfs); __func__, card, queue, ehdr->reply_code, apfs);
} else } else {
ZCRYPT_DBF_WARN("%s dev=%02x.%04x RY=0x%02x => bus rescan, rc=EAGAIN\n", ZCRYPT_DBF_WARN("%s dev=%02x.%04x RY=0x%02x => bus rescan, rc=EAGAIN\n",
__func__, card, queue, __func__, card, queue,
ehdr->reply_code); ehdr->reply_code);
}
return -EAGAIN; return -EAGAIN;
default: default:
/* Assume request is valid and a retry will be worth it */ /* Assume request is valid and a retry will be worth it */
......
...@@ -158,7 +158,6 @@ struct type80_hdr { ...@@ -158,7 +158,6 @@ struct type80_hdr {
int get_rsa_modex_fc(struct ica_rsa_modexpo *mex, int *fcode) int get_rsa_modex_fc(struct ica_rsa_modexpo *mex, int *fcode)
{ {
if (!mex->inputdatalength) if (!mex->inputdatalength)
return -EINVAL; return -EINVAL;
...@@ -174,7 +173,6 @@ int get_rsa_modex_fc(struct ica_rsa_modexpo *mex, int *fcode) ...@@ -174,7 +173,6 @@ int get_rsa_modex_fc(struct ica_rsa_modexpo *mex, int *fcode)
int get_rsa_crt_fc(struct ica_rsa_modexpo_crt *crt, int *fcode) int get_rsa_crt_fc(struct ica_rsa_modexpo_crt *crt, int *fcode)
{ {
if (!crt->inputdatalength) if (!crt->inputdatalength)
return -EINVAL; return -EINVAL;
...@@ -239,8 +237,9 @@ static int ICAMEX_msg_to_type50MEX_msg(struct zcrypt_queue *zq, ...@@ -239,8 +237,9 @@ static int ICAMEX_msg_to_type50MEX_msg(struct zcrypt_queue *zq,
mod = meb3->modulus + sizeof(meb3->modulus) - mod_len; mod = meb3->modulus + sizeof(meb3->modulus) - mod_len;
exp = meb3->exponent + sizeof(meb3->exponent) - mod_len; exp = meb3->exponent + sizeof(meb3->exponent) - mod_len;
inp = meb3->message + sizeof(meb3->message) - mod_len; inp = meb3->message + sizeof(meb3->message) - mod_len;
} else } else {
return -EINVAL; return -EINVAL;
}
if (copy_from_user(mod, mex->n_modulus, mod_len) || if (copy_from_user(mod, mex->n_modulus, mod_len) ||
copy_from_user(exp, mex->b_key, mod_len) || copy_from_user(exp, mex->b_key, mod_len) ||
...@@ -323,8 +322,9 @@ static int ICACRT_msg_to_type50CRT_msg(struct zcrypt_queue *zq, ...@@ -323,8 +322,9 @@ static int ICACRT_msg_to_type50CRT_msg(struct zcrypt_queue *zq,
dq = crb3->dq + sizeof(crb3->dq) - short_len; dq = crb3->dq + sizeof(crb3->dq) - short_len;
u = crb3->u + sizeof(crb3->u) - short_len; u = crb3->u + sizeof(crb3->u) - short_len;
inp = crb3->message + sizeof(crb3->message) - mod_len; inp = crb3->message + sizeof(crb3->message) - mod_len;
} else } else {
return -EINVAL; return -EINVAL;
}
/* /*
* correct the offset of p, bp and mult_inv according zcrypt.h * correct the offset of p, bp and mult_inv according zcrypt.h
...@@ -392,7 +392,7 @@ static int convert_response_cex2a(struct zcrypt_queue *zq, ...@@ -392,7 +392,7 @@ static int convert_response_cex2a(struct zcrypt_queue *zq,
unsigned int outputdatalength) unsigned int outputdatalength)
{ {
/* Response type byte is the second byte in the response. */ /* Response type byte is the second byte in the response. */
unsigned char rtype = ((unsigned char *) reply->msg)[1]; unsigned char rtype = ((unsigned char *)reply->msg)[1];
switch (rtype) { switch (rtype) {
case TYPE82_RSP_CODE: case TYPE82_RSP_CODE:
...@@ -406,11 +406,11 @@ static int convert_response_cex2a(struct zcrypt_queue *zq, ...@@ -406,11 +406,11 @@ static int convert_response_cex2a(struct zcrypt_queue *zq,
pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) rtype); (int)rtype);
ZCRYPT_DBF_ERR( ZCRYPT_DBF_ERR(
"%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", "%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), (int) rtype); AP_QID_QUEUE(zq->queue->qid), (int)rtype);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
...@@ -447,10 +447,11 @@ static void zcrypt_cex2a_receive(struct ap_queue *aq, ...@@ -447,10 +447,11 @@ static void zcrypt_cex2a_receive(struct ap_queue *aq,
memcpy(msg->msg, reply->msg, len); memcpy(msg->msg, reply->msg, len);
msg->len = len; msg->len = len;
} }
} else } else {
memcpy(msg->msg, reply->msg, sizeof(error_reply)); memcpy(msg->msg, reply->msg, sizeof(error_reply));
}
out: out:
complete((struct completion *) msg->private); complete((struct completion *)msg->private);
} }
static atomic_t zcrypt_step = ATOMIC_INIT(0); static atomic_t zcrypt_step = ATOMIC_INIT(0);
...@@ -475,7 +476,7 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq, ...@@ -475,7 +476,7 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq,
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->receive = zcrypt_cex2a_receive; ap_msg->receive = zcrypt_cex2a_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = &work; ap_msg->private = &work;
rc = ICAMEX_msg_to_type50MEX_msg(zq, ap_msg, mex); rc = ICAMEX_msg_to_type50MEX_msg(zq, ap_msg, mex);
...@@ -492,9 +493,11 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq, ...@@ -492,9 +493,11 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq,
rc = convert_response_cex2a(zq, ap_msg, rc = convert_response_cex2a(zq, ap_msg,
mex->outputdata, mex->outputdata,
mex->outputdatalength); mex->outputdatalength);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out: out:
ap_msg->private = NULL; ap_msg->private = NULL;
if (rc) if (rc)
...@@ -524,7 +527,7 @@ static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq, ...@@ -524,7 +527,7 @@ static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq,
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->receive = zcrypt_cex2a_receive; ap_msg->receive = zcrypt_cex2a_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = &work; ap_msg->private = &work;
rc = ICACRT_msg_to_type50CRT_msg(zq, ap_msg, crt); rc = ICACRT_msg_to_type50CRT_msg(zq, ap_msg, crt);
...@@ -541,9 +544,11 @@ static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq, ...@@ -541,9 +544,11 @@ static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq,
rc = convert_response_cex2a(zq, ap_msg, rc = convert_response_cex2a(zq, ap_msg,
crt->outputdata, crt->outputdata,
crt->outputdatalength); crt->outputdatalength);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out: out:
ap_msg->private = NULL; ap_msg->private = NULL;
if (rc) if (rc)
......
...@@ -29,12 +29,13 @@ ...@@ -29,12 +29,13 @@
#define CEXXC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */ #define CEXXC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */
#define CEIL4(x) ((((x)+3)/4)*4) #define CEIL4(x) ((((x) + 3) / 4) * 4)
struct response_type { struct response_type {
struct completion work; struct completion work;
int type; int type;
}; };
#define CEXXC_RESPONSE_TYPE_ICA 0 #define CEXXC_RESPONSE_TYPE_ICA 0
#define CEXXC_RESPONSE_TYPE_XCRB 1 #define CEXXC_RESPONSE_TYPE_XCRB 1
#define CEXXC_RESPONSE_TYPE_EP11 2 #define CEXXC_RESPONSE_TYPE_EP11 2
...@@ -178,7 +179,6 @@ int speed_idx_ep11(int req_type) ...@@ -178,7 +179,6 @@ int speed_idx_ep11(int req_type)
} }
} }
/* /*
* Convert a ICAMEX message to a type6 MEX message. * Convert a ICAMEX message to a type6 MEX message.
* *
...@@ -188,7 +188,7 @@ int speed_idx_ep11(int req_type) ...@@ -188,7 +188,7 @@ int speed_idx_ep11(int req_type)
* *
* Returns 0 on success or negative errno value. * Returns 0 on success or negative errno value.
*/ */
static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq, static int icamex_msg_to_type6mex_msgx(struct zcrypt_queue *zq,
struct ap_message *ap_msg, struct ap_message *ap_msg,
struct ica_rsa_modexpo *mex) struct ica_rsa_modexpo *mex)
{ {
...@@ -226,19 +226,19 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq, ...@@ -226,19 +226,19 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq,
return -EFAULT; return -EFAULT;
/* Set up key which is located after the variable length text. */ /* Set up key which is located after the variable length text. */
size = zcrypt_type6_mex_key_en(mex, msg->text+mex->inputdatalength); size = zcrypt_type6_mex_key_en(mex, msg->text + mex->inputdatalength);
if (size < 0) if (size < 0)
return size; return size;
size += sizeof(*msg) + mex->inputdatalength; size += sizeof(*msg) + mex->inputdatalength;
/* message header, cprbx and f&r */ /* message header, cprbx and f&r */
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
msg->hdr.ToCardLen1 = size - sizeof(msg->hdr); msg->hdr.tocardlen1 = size - sizeof(msg->hdr);
msg->hdr.FromCardLen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr); msg->hdr.fromcardlen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr);
msg->cprbx = static_cprbx; msg->cprbx = static_cprbx;
msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid); msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid);
msg->cprbx.rpl_msgbl = msg->hdr.FromCardLen1; msg->cprbx.rpl_msgbl = msg->hdr.fromcardlen1;
msg->fr = static_pke_fnr; msg->fr = static_pke_fnr;
...@@ -257,7 +257,7 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq, ...@@ -257,7 +257,7 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq,
* *
* Returns 0 on success or negative errno value. * Returns 0 on success or negative errno value.
*/ */
static int ICACRT_msg_to_type6CRT_msgX(struct zcrypt_queue *zq, static int icacrt_msg_to_type6crt_msgx(struct zcrypt_queue *zq,
struct ap_message *ap_msg, struct ap_message *ap_msg,
struct ica_rsa_modexpo_crt *crt) struct ica_rsa_modexpo_crt *crt)
{ {
...@@ -303,8 +303,8 @@ static int ICACRT_msg_to_type6CRT_msgX(struct zcrypt_queue *zq, ...@@ -303,8 +303,8 @@ static int ICACRT_msg_to_type6CRT_msgX(struct zcrypt_queue *zq,
/* message header, cprbx and f&r */ /* message header, cprbx and f&r */
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
msg->hdr.ToCardLen1 = size - sizeof(msg->hdr); msg->hdr.tocardlen1 = size - sizeof(msg->hdr);
msg->hdr.FromCardLen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr); msg->hdr.fromcardlen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr);
msg->cprbx = static_cprbx; msg->cprbx = static_cprbx;
msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid); msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid);
...@@ -331,8 +331,8 @@ struct type86_fmt2_msg { ...@@ -331,8 +331,8 @@ struct type86_fmt2_msg {
struct type86_fmt2_ext fmt2; struct type86_fmt2_ext fmt2;
} __packed; } __packed;
static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg, static int xcrb_msg_to_type6cprb_msgx(bool userspace, struct ap_message *ap_msg,
struct ica_xcRB *xcRB, struct ica_xcRB *xcrb,
unsigned int *fcode, unsigned int *fcode,
unsigned short **dom) unsigned short **dom)
{ {
...@@ -345,19 +345,19 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg, ...@@ -345,19 +345,19 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg,
struct CPRBX cprbx; struct CPRBX cprbx;
} __packed * msg = ap_msg->msg; } __packed * msg = ap_msg->msg;
int rcblen = CEIL4(xcRB->request_control_blk_length); int rcblen = CEIL4(xcrb->request_control_blk_length);
int req_sumlen, resp_sumlen; int req_sumlen, resp_sumlen;
char *req_data = ap_msg->msg + sizeof(struct type6_hdr) + rcblen; char *req_data = ap_msg->msg + sizeof(struct type6_hdr) + rcblen;
char *function_code; char *function_code;
if (CEIL4(xcRB->request_control_blk_length) < if (CEIL4(xcrb->request_control_blk_length) <
xcRB->request_control_blk_length) xcrb->request_control_blk_length)
return -EINVAL; /* overflow after alignment*/ return -EINVAL; /* overflow after alignment*/
/* length checks */ /* length checks */
ap_msg->len = sizeof(struct type6_hdr) + ap_msg->len = sizeof(struct type6_hdr) +
CEIL4(xcRB->request_control_blk_length) + CEIL4(xcrb->request_control_blk_length) +
xcRB->request_data_length; xcrb->request_data_length;
if (ap_msg->len > ap_msg->bufsize) if (ap_msg->len > ap_msg->bufsize)
return -EINVAL; return -EINVAL;
...@@ -365,48 +365,49 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg, ...@@ -365,48 +365,49 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg,
* Overflow check * Overflow check
* sum must be greater (or equal) than the largest operand * sum must be greater (or equal) than the largest operand
*/ */
req_sumlen = CEIL4(xcRB->request_control_blk_length) + req_sumlen = CEIL4(xcrb->request_control_blk_length) +
xcRB->request_data_length; xcrb->request_data_length;
if ((CEIL4(xcRB->request_control_blk_length) <= if ((CEIL4(xcrb->request_control_blk_length) <=
xcRB->request_data_length) ? xcrb->request_data_length) ?
(req_sumlen < xcRB->request_data_length) : req_sumlen < xcrb->request_data_length :
(req_sumlen < CEIL4(xcRB->request_control_blk_length))) { req_sumlen < CEIL4(xcrb->request_control_blk_length)) {
return -EINVAL; return -EINVAL;
} }
if (CEIL4(xcRB->reply_control_blk_length) < if (CEIL4(xcrb->reply_control_blk_length) <
xcRB->reply_control_blk_length) xcrb->reply_control_blk_length)
return -EINVAL; /* overflow after alignment*/ return -EINVAL; /* overflow after alignment*/
/* /*
* Overflow check * Overflow check
* sum must be greater (or equal) than the largest operand * sum must be greater (or equal) than the largest operand
*/ */
resp_sumlen = CEIL4(xcRB->reply_control_blk_length) + resp_sumlen = CEIL4(xcrb->reply_control_blk_length) +
xcRB->reply_data_length; xcrb->reply_data_length;
if ((CEIL4(xcRB->reply_control_blk_length) <= xcRB->reply_data_length) ? if ((CEIL4(xcrb->reply_control_blk_length) <=
(resp_sumlen < xcRB->reply_data_length) : xcrb->reply_data_length) ?
(resp_sumlen < CEIL4(xcRB->reply_control_blk_length))) { resp_sumlen < xcrb->reply_data_length :
resp_sumlen < CEIL4(xcrb->reply_control_blk_length)) {
return -EINVAL; return -EINVAL;
} }
/* prepare type6 header */ /* prepare type6 header */
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
memcpy(msg->hdr.agent_id, &(xcRB->agent_ID), sizeof(xcRB->agent_ID)); memcpy(msg->hdr.agent_id, &xcrb->agent_ID, sizeof(xcrb->agent_ID));
msg->hdr.ToCardLen1 = xcRB->request_control_blk_length; msg->hdr.tocardlen1 = xcrb->request_control_blk_length;
if (xcRB->request_data_length) { if (xcrb->request_data_length) {
msg->hdr.offset2 = msg->hdr.offset1 + rcblen; msg->hdr.offset2 = msg->hdr.offset1 + rcblen;
msg->hdr.ToCardLen2 = xcRB->request_data_length; msg->hdr.tocardlen2 = xcrb->request_data_length;
} }
msg->hdr.FromCardLen1 = xcRB->reply_control_blk_length; msg->hdr.fromcardlen1 = xcrb->reply_control_blk_length;
msg->hdr.FromCardLen2 = xcRB->reply_data_length; msg->hdr.fromcardlen2 = xcrb->reply_data_length;
/* prepare CPRB */ /* prepare CPRB */
if (z_copy_from_user(userspace, &(msg->cprbx), xcRB->request_control_blk_addr, if (z_copy_from_user(userspace, &msg->cprbx, xcrb->request_control_blk_addr,
xcRB->request_control_blk_length)) xcrb->request_control_blk_length))
return -EFAULT; return -EFAULT;
if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) > if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) >
xcRB->request_control_blk_length) xcrb->request_control_blk_length)
return -EINVAL; return -EINVAL;
function_code = ((unsigned char *)&msg->cprbx) + msg->cprbx.cprb_len; function_code = ((unsigned char *)&msg->cprbx) + msg->cprbx.cprb_len;
memcpy(msg->hdr.function_code, function_code, memcpy(msg->hdr.function_code, function_code,
...@@ -416,8 +417,8 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg, ...@@ -416,8 +417,8 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg,
*dom = (unsigned short *)&msg->cprbx.domain; *dom = (unsigned short *)&msg->cprbx.domain;
/* check subfunction, US and AU need special flag with NQAP */ /* check subfunction, US and AU need special flag with NQAP */
if (memcmp(function_code, "US", 2) == 0 if (memcmp(function_code, "US", 2) == 0 ||
|| memcmp(function_code, "AU", 2) == 0) memcmp(function_code, "AU", 2) == 0)
ap_msg->flags |= AP_MSG_FLAG_SPECIAL; ap_msg->flags |= AP_MSG_FLAG_SPECIAL;
#ifdef CONFIG_ZCRYPT_DEBUG #ifdef CONFIG_ZCRYPT_DEBUG
...@@ -443,16 +444,16 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg, ...@@ -443,16 +444,16 @@ static int XCRB_msg_to_type6CPRB_msgX(bool userspace, struct ap_message *ap_msg,
} }
/* copy data block */ /* copy data block */
if (xcRB->request_data_length && if (xcrb->request_data_length &&
z_copy_from_user(userspace, req_data, xcRB->request_data_address, z_copy_from_user(userspace, req_data, xcrb->request_data_address,
xcRB->request_data_length)) xcrb->request_data_length))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap_msg, static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap_msg,
struct ep11_urb *xcRB, struct ep11_urb *xcrb,
unsigned int *fcode, unsigned int *fcode,
unsigned int *domain) unsigned int *domain)
{ {
...@@ -482,25 +483,25 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap ...@@ -482,25 +483,25 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap
unsigned int dom_val; /* domain id */ unsigned int dom_val; /* domain id */
} __packed * payload_hdr = NULL; } __packed * payload_hdr = NULL;
if (CEIL4(xcRB->req_len) < xcRB->req_len) if (CEIL4(xcrb->req_len) < xcrb->req_len)
return -EINVAL; /* overflow after alignment*/ return -EINVAL; /* overflow after alignment*/
/* length checks */ /* length checks */
ap_msg->len = sizeof(struct type6_hdr) + CEIL4(xcRB->req_len); ap_msg->len = sizeof(struct type6_hdr) + CEIL4(xcrb->req_len);
if (ap_msg->len > ap_msg->bufsize) if (ap_msg->len > ap_msg->bufsize)
return -EINVAL; return -EINVAL;
if (CEIL4(xcRB->resp_len) < xcRB->resp_len) if (CEIL4(xcrb->resp_len) < xcrb->resp_len)
return -EINVAL; /* overflow after alignment*/ return -EINVAL; /* overflow after alignment*/
/* prepare type6 header */ /* prepare type6 header */
msg->hdr = static_type6_ep11_hdr; msg->hdr = static_type6_ep11_hdr;
msg->hdr.ToCardLen1 = xcRB->req_len; msg->hdr.tocardlen1 = xcrb->req_len;
msg->hdr.FromCardLen1 = xcRB->resp_len; msg->hdr.fromcardlen1 = xcrb->resp_len;
/* Import CPRB data from the ioctl input parameter */ /* Import CPRB data from the ioctl input parameter */
if (z_copy_from_user(userspace, &(msg->cprbx.cprb_len), if (z_copy_from_user(userspace, &msg->cprbx.cprb_len,
(char __force __user *)xcRB->req, xcRB->req_len)) { (char __force __user *)xcrb->req, xcrb->req_len)) {
return -EFAULT; return -EFAULT;
} }
...@@ -518,7 +519,7 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap ...@@ -518,7 +519,7 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap
} else { } else {
lfmt = 1; /* length format #1 */ lfmt = 1; /* length format #1 */
} }
payload_hdr = (struct pld_hdr *)((&(msg->pld_lenfmt))+lfmt); payload_hdr = (struct pld_hdr *)((&msg->pld_lenfmt) + lfmt);
*fcode = payload_hdr->func_val & 0xFFFF; *fcode = payload_hdr->func_val & 0xFFFF;
/* enable special processing based on the cprbs flags special bit */ /* enable special processing based on the cprbs flags special bit */
...@@ -567,9 +568,9 @@ struct type86_ep11_reply { ...@@ -567,9 +568,9 @@ struct type86_ep11_reply {
} __packed; } __packed;
static int convert_type86_ica(struct zcrypt_queue *zq, static int convert_type86_ica(struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
char __user *outputdata, char __user *outputdata,
unsigned int outputdatalength) unsigned int outputdatalength)
{ {
static unsigned char static_pad[] = { static unsigned char static_pad[] = {
0x00, 0x02, 0x00, 0x02,
...@@ -622,18 +623,18 @@ static int convert_type86_ica(struct zcrypt_queue *zq, ...@@ -622,18 +623,18 @@ static int convert_type86_ica(struct zcrypt_queue *zq,
ZCRYPT_DBF_WARN("%s dev=%02x.%04x rc/rs=%d/%d => rc=EINVAL\n", ZCRYPT_DBF_WARN("%s dev=%02x.%04x rc/rs=%d/%d => rc=EINVAL\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) service_rc, (int) service_rs); (int)service_rc, (int)service_rs);
return -EINVAL; return -EINVAL;
} }
zq->online = 0; zq->online = 0;
pr_err("Crypto dev=%02x.%04x rc/rs=%d/%d online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x rc/rs=%d/%d online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) service_rc, (int) service_rs); (int)service_rc, (int)service_rs);
ZCRYPT_DBF_ERR("%s dev=%02x.%04x rc/rs=%d/%d => online=0 rc=EAGAIN\n", ZCRYPT_DBF_ERR("%s dev=%02x.%04x rc/rs=%d/%d => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) service_rc, (int) service_rs); (int)service_rc, (int)service_rs);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
...@@ -672,42 +673,42 @@ static int convert_type86_ica(struct zcrypt_queue *zq, ...@@ -672,42 +673,42 @@ static int convert_type86_ica(struct zcrypt_queue *zq,
* *
* @zq: crypto device pointer * @zq: crypto device pointer
* @reply: reply AP message. * @reply: reply AP message.
* @xcRB: pointer to XCRB * @xcrb: pointer to XCRB
* *
* Returns 0 on success or -EINVAL, -EFAULT, -EAGAIN in case of an error. * Returns 0 on success or -EINVAL, -EFAULT, -EAGAIN in case of an error.
*/ */
static int convert_type86_xcrb(bool userspace, struct zcrypt_queue *zq, static int convert_type86_xcrb(bool userspace, struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
struct ica_xcRB *xcRB) struct ica_xcRB *xcrb)
{ {
struct type86_fmt2_msg *msg = reply->msg; struct type86_fmt2_msg *msg = reply->msg;
char *data = reply->msg; char *data = reply->msg;
/* Copy CPRB to user */ /* Copy CPRB to user */
if (xcRB->reply_control_blk_length < msg->fmt2.count1) { if (xcrb->reply_control_blk_length < msg->fmt2.count1) {
ZCRYPT_DBF_DBG("%s reply_control_blk_length %u < required %u => EMSGSIZE\n", ZCRYPT_DBF_DBG("%s reply_control_blk_length %u < required %u => EMSGSIZE\n",
__func__, xcRB->reply_control_blk_length, __func__, xcrb->reply_control_blk_length,
msg->fmt2.count1); msg->fmt2.count1);
return -EMSGSIZE; return -EMSGSIZE;
} }
if (z_copy_to_user(userspace, xcRB->reply_control_blk_addr, if (z_copy_to_user(userspace, xcrb->reply_control_blk_addr,
data + msg->fmt2.offset1, msg->fmt2.count1)) data + msg->fmt2.offset1, msg->fmt2.count1))
return -EFAULT; return -EFAULT;
xcRB->reply_control_blk_length = msg->fmt2.count1; xcrb->reply_control_blk_length = msg->fmt2.count1;
/* Copy data buffer to user */ /* Copy data buffer to user */
if (msg->fmt2.count2) { if (msg->fmt2.count2) {
if (xcRB->reply_data_length < msg->fmt2.count2) { if (xcrb->reply_data_length < msg->fmt2.count2) {
ZCRYPT_DBF_DBG("%s reply_data_length %u < required %u => EMSGSIZE\n", ZCRYPT_DBF_DBG("%s reply_data_length %u < required %u => EMSGSIZE\n",
__func__, xcRB->reply_data_length, __func__, xcrb->reply_data_length,
msg->fmt2.count2); msg->fmt2.count2);
return -EMSGSIZE; return -EMSGSIZE;
} }
if (z_copy_to_user(userspace, xcRB->reply_data_addr, if (z_copy_to_user(userspace, xcrb->reply_data_addr,
data + msg->fmt2.offset2, msg->fmt2.count2)) data + msg->fmt2.offset2, msg->fmt2.count2))
return -EFAULT; return -EFAULT;
} }
xcRB->reply_data_length = msg->fmt2.count2; xcrb->reply_data_length = msg->fmt2.count2;
return 0; return 0;
} }
...@@ -717,35 +718,35 @@ static int convert_type86_xcrb(bool userspace, struct zcrypt_queue *zq, ...@@ -717,35 +718,35 @@ static int convert_type86_xcrb(bool userspace, struct zcrypt_queue *zq,
* *
* @zq: crypto device pointer * @zq: crypto device pointer
* @reply: reply AP message. * @reply: reply AP message.
* @xcRB: pointer to EP11 user request block * @xcrb: pointer to EP11 user request block
* *
* Returns 0 on success or -EINVAL, -EFAULT, -EAGAIN in case of an error. * Returns 0 on success or -EINVAL, -EFAULT, -EAGAIN in case of an error.
*/ */
static int convert_type86_ep11_xcrb(bool userspace, struct zcrypt_queue *zq, static int convert_type86_ep11_xcrb(bool userspace, struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
struct ep11_urb *xcRB) struct ep11_urb *xcrb)
{ {
struct type86_fmt2_msg *msg = reply->msg; struct type86_fmt2_msg *msg = reply->msg;
char *data = reply->msg; char *data = reply->msg;
if (xcRB->resp_len < msg->fmt2.count1) { if (xcrb->resp_len < msg->fmt2.count1) {
ZCRYPT_DBF_DBG("%s resp_len %u < required %u => EMSGSIZE\n", ZCRYPT_DBF_DBG("%s resp_len %u < required %u => EMSGSIZE\n",
__func__, (unsigned int)xcRB->resp_len, __func__, (unsigned int)xcrb->resp_len,
msg->fmt2.count1); msg->fmt2.count1);
return -EMSGSIZE; return -EMSGSIZE;
} }
/* Copy response CPRB to user */ /* Copy response CPRB to user */
if (z_copy_to_user(userspace, (char __force __user *)xcRB->resp, if (z_copy_to_user(userspace, (char __force __user *)xcrb->resp,
data + msg->fmt2.offset1, msg->fmt2.count1)) data + msg->fmt2.offset1, msg->fmt2.count1))
return -EFAULT; return -EFAULT;
xcRB->resp_len = msg->fmt2.count1; xcrb->resp_len = msg->fmt2.count1;
return 0; return 0;
} }
static int convert_type86_rng(struct zcrypt_queue *zq, static int convert_type86_rng(struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
char *buffer) char *buffer)
{ {
struct { struct {
struct type86_hdr hdr; struct type86_hdr hdr;
...@@ -761,9 +762,9 @@ static int convert_type86_rng(struct zcrypt_queue *zq, ...@@ -761,9 +762,9 @@ static int convert_type86_rng(struct zcrypt_queue *zq,
} }
static int convert_response_ica(struct zcrypt_queue *zq, static int convert_response_ica(struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
char __user *outputdata, char __user *outputdata,
unsigned int outputdatalength) unsigned int outputdatalength)
{ {
struct type86x_reply *msg = reply->msg; struct type86x_reply *msg = reply->msg;
...@@ -773,13 +774,14 @@ static int convert_response_ica(struct zcrypt_queue *zq, ...@@ -773,13 +774,14 @@ static int convert_response_ica(struct zcrypt_queue *zq,
return convert_error(zq, reply); return convert_error(zq, reply);
case TYPE86_RSP_CODE: case TYPE86_RSP_CODE:
if (msg->cprbx.ccp_rtcode && if (msg->cprbx.ccp_rtcode &&
(msg->cprbx.ccp_rscode == 0x14f) && msg->cprbx.ccp_rscode == 0x14f &&
(outputdatalength > 256)) { outputdatalength > 256) {
if (zq->zcard->max_exp_bit_length <= 17) { if (zq->zcard->max_exp_bit_length <= 17) {
zq->zcard->max_exp_bit_length = 17; zq->zcard->max_exp_bit_length = 17;
return -EAGAIN; return -EAGAIN;
} else } else {
return -EINVAL; return -EINVAL;
}
} }
if (msg->hdr.reply_code) if (msg->hdr.reply_code)
return convert_error(zq, reply); return convert_error(zq, reply);
...@@ -793,11 +795,11 @@ static int convert_response_ica(struct zcrypt_queue *zq, ...@@ -793,11 +795,11 @@ static int convert_response_ica(struct zcrypt_queue *zq,
pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) msg->hdr.type); (int)msg->hdr.type);
ZCRYPT_DBF_ERR( ZCRYPT_DBF_ERR(
"%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", "%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), (int) msg->hdr.type); AP_QID_QUEUE(zq->queue->qid), (int)msg->hdr.type);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
...@@ -805,41 +807,41 @@ static int convert_response_ica(struct zcrypt_queue *zq, ...@@ -805,41 +807,41 @@ static int convert_response_ica(struct zcrypt_queue *zq,
static int convert_response_xcrb(bool userspace, struct zcrypt_queue *zq, static int convert_response_xcrb(bool userspace, struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
struct ica_xcRB *xcRB) struct ica_xcRB *xcrb)
{ {
struct type86x_reply *msg = reply->msg; struct type86x_reply *msg = reply->msg;
switch (msg->hdr.type) { switch (msg->hdr.type) {
case TYPE82_RSP_CODE: case TYPE82_RSP_CODE:
case TYPE88_RSP_CODE: case TYPE88_RSP_CODE:
xcRB->status = 0x0008044DL; /* HDD_InvalidParm */ xcrb->status = 0x0008044DL; /* HDD_InvalidParm */
return convert_error(zq, reply); return convert_error(zq, reply);
case TYPE86_RSP_CODE: case TYPE86_RSP_CODE:
if (msg->hdr.reply_code) { if (msg->hdr.reply_code) {
memcpy(&(xcRB->status), msg->fmt2.apfs, sizeof(u32)); memcpy(&xcrb->status, msg->fmt2.apfs, sizeof(u32));
return convert_error(zq, reply); return convert_error(zq, reply);
} }
if (msg->cprbx.cprb_ver_id == 0x02) if (msg->cprbx.cprb_ver_id == 0x02)
return convert_type86_xcrb(userspace, zq, reply, xcRB); return convert_type86_xcrb(userspace, zq, reply, xcrb);
fallthrough; /* wrong cprb version is an unknown response */ fallthrough; /* wrong cprb version is an unknown response */
default: /* Unknown response type, this should NEVER EVER happen */ default: /* Unknown response type, this should NEVER EVER happen */
xcRB->status = 0x0008044DL; /* HDD_InvalidParm */ xcrb->status = 0x0008044DL; /* HDD_InvalidParm */
zq->online = 0; zq->online = 0;
pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) msg->hdr.type); (int)msg->hdr.type);
ZCRYPT_DBF_ERR( ZCRYPT_DBF_ERR(
"%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", "%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), (int) msg->hdr.type); AP_QID_QUEUE(zq->queue->qid), (int)msg->hdr.type);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
} }
static int convert_response_ep11_xcrb(bool userspace, struct zcrypt_queue *zq, static int convert_response_ep11_xcrb(bool userspace, struct zcrypt_queue *zq,
struct ap_message *reply, struct ep11_urb *xcRB) struct ap_message *reply, struct ep11_urb *xcrb)
{ {
struct type86_ep11_reply *msg = reply->msg; struct type86_ep11_reply *msg = reply->msg;
...@@ -851,26 +853,26 @@ static int convert_response_ep11_xcrb(bool userspace, struct zcrypt_queue *zq, ...@@ -851,26 +853,26 @@ static int convert_response_ep11_xcrb(bool userspace, struct zcrypt_queue *zq,
if (msg->hdr.reply_code) if (msg->hdr.reply_code)
return convert_error(zq, reply); return convert_error(zq, reply);
if (msg->cprbx.cprb_ver_id == 0x04) if (msg->cprbx.cprb_ver_id == 0x04)
return convert_type86_ep11_xcrb(userspace, zq, reply, xcRB); return convert_type86_ep11_xcrb(userspace, zq, reply, xcrb);
fallthrough; /* wrong cprb version is an unknown resp */ fallthrough; /* wrong cprb version is an unknown resp */
default: /* Unknown response type, this should NEVER EVER happen */ default: /* Unknown response type, this should NEVER EVER happen */
zq->online = 0; zq->online = 0;
pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) msg->hdr.type); (int)msg->hdr.type);
ZCRYPT_DBF_ERR( ZCRYPT_DBF_ERR(
"%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", "%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), (int) msg->hdr.type); AP_QID_QUEUE(zq->queue->qid), (int)msg->hdr.type);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
} }
static int convert_response_rng(struct zcrypt_queue *zq, static int convert_response_rng(struct zcrypt_queue *zq,
struct ap_message *reply, struct ap_message *reply,
char *data) char *data)
{ {
struct type86x_reply *msg = reply->msg; struct type86x_reply *msg = reply->msg;
...@@ -889,11 +891,11 @@ static int convert_response_rng(struct zcrypt_queue *zq, ...@@ -889,11 +891,11 @@ static int convert_response_rng(struct zcrypt_queue *zq,
pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", pr_err("Crypto dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), AP_QID_QUEUE(zq->queue->qid),
(int) msg->hdr.type); (int)msg->hdr.type);
ZCRYPT_DBF_ERR( ZCRYPT_DBF_ERR(
"%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n", "%s dev=%02x.%04x unknown response type 0x%02x => online=0 rc=EAGAIN\n",
__func__, AP_QID_CARD(zq->queue->qid), __func__, AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid), (int) msg->hdr.type); AP_QID_QUEUE(zq->queue->qid), (int)msg->hdr.type);
ap_send_online_uevent(&zq->queue->ap_dev, zq->online); ap_send_online_uevent(&zq->queue->ap_dev, zq->online);
return -EAGAIN; return -EAGAIN;
} }
...@@ -908,15 +910,15 @@ static int convert_response_rng(struct zcrypt_queue *zq, ...@@ -908,15 +910,15 @@ static int convert_response_rng(struct zcrypt_queue *zq,
* @reply: pointer to the AP reply message * @reply: pointer to the AP reply message
*/ */
static void zcrypt_msgtype6_receive(struct ap_queue *aq, static void zcrypt_msgtype6_receive(struct ap_queue *aq,
struct ap_message *msg, struct ap_message *msg,
struct ap_message *reply) struct ap_message *reply)
{ {
static struct error_hdr error_reply = { static struct error_hdr error_reply = {
.type = TYPE82_RSP_CODE, .type = TYPE82_RSP_CODE,
.reply_code = REP82_ERROR_MACHINE_FAILURE, .reply_code = REP82_ERROR_MACHINE_FAILURE,
}; };
struct response_type *resp_type = struct response_type *resp_type =
(struct response_type *) msg->private; (struct response_type *)msg->private;
struct type86x_reply *t86r; struct type86x_reply *t86r;
int len; int len;
...@@ -925,7 +927,7 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq, ...@@ -925,7 +927,7 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq,
goto out; /* ap_msg->rc indicates the error */ goto out; /* ap_msg->rc indicates the error */
t86r = reply->msg; t86r = reply->msg;
if (t86r->hdr.type == TYPE86_RSP_CODE && if (t86r->hdr.type == TYPE86_RSP_CODE &&
t86r->cprbx.cprb_ver_id == 0x02) { t86r->cprbx.cprb_ver_id == 0x02) {
switch (resp_type->type) { switch (resp_type->type) {
case CEXXC_RESPONSE_TYPE_ICA: case CEXXC_RESPONSE_TYPE_ICA:
len = sizeof(struct type86x_reply) + t86r->length - 2; len = sizeof(struct type86x_reply) + t86r->length - 2;
...@@ -948,10 +950,11 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq, ...@@ -948,10 +950,11 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq,
default: default:
memcpy(msg->msg, &error_reply, sizeof(error_reply)); memcpy(msg->msg, &error_reply, sizeof(error_reply));
} }
} else } else {
memcpy(msg->msg, reply->msg, sizeof(error_reply)); memcpy(msg->msg, reply->msg, sizeof(error_reply));
}
out: out:
complete(&(resp_type->work)); complete(&resp_type->work);
} }
/* /*
...@@ -998,7 +1001,7 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq, ...@@ -998,7 +1001,7 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq,
memcpy(msg->msg, reply->msg, sizeof(error_reply)); memcpy(msg->msg, reply->msg, sizeof(error_reply));
} }
out: out:
complete(&(resp_type->work)); complete(&resp_type->work);
} }
static atomic_t zcrypt_step = ATOMIC_INIT(0); static atomic_t zcrypt_step = ATOMIC_INIT(0);
...@@ -1019,15 +1022,15 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq, ...@@ -1019,15 +1022,15 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq,
}; };
int rc; int rc;
ap_msg->msg = (void *) get_zeroed_page(GFP_KERNEL); ap_msg->msg = (void *)get_zeroed_page(GFP_KERNEL);
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->bufsize = PAGE_SIZE; ap_msg->bufsize = PAGE_SIZE;
ap_msg->receive = zcrypt_msgtype6_receive; ap_msg->receive = zcrypt_msgtype6_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = &resp_type; ap_msg->private = &resp_type;
rc = ICAMEX_msg_to_type6MEX_msgX(zq, ap_msg, mex); rc = icamex_msg_to_type6mex_msgx(zq, ap_msg, mex);
if (rc) if (rc)
goto out_free; goto out_free;
init_completion(&resp_type.work); init_completion(&resp_type.work);
...@@ -1041,11 +1044,13 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq, ...@@ -1041,11 +1044,13 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq,
rc = convert_response_ica(zq, ap_msg, rc = convert_response_ica(zq, ap_msg,
mex->outputdata, mex->outputdata,
mex->outputdatalength); mex->outputdatalength);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out_free: out_free:
free_page((unsigned long) ap_msg->msg); free_page((unsigned long)ap_msg->msg);
ap_msg->private = NULL; ap_msg->private = NULL;
ap_msg->msg = NULL; ap_msg->msg = NULL;
return rc; return rc;
...@@ -1067,15 +1072,15 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq, ...@@ -1067,15 +1072,15 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq,
}; };
int rc; int rc;
ap_msg->msg = (void *) get_zeroed_page(GFP_KERNEL); ap_msg->msg = (void *)get_zeroed_page(GFP_KERNEL);
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->bufsize = PAGE_SIZE; ap_msg->bufsize = PAGE_SIZE;
ap_msg->receive = zcrypt_msgtype6_receive; ap_msg->receive = zcrypt_msgtype6_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = &resp_type; ap_msg->private = &resp_type;
rc = ICACRT_msg_to_type6CRT_msgX(zq, ap_msg, crt); rc = icacrt_msg_to_type6crt_msgx(zq, ap_msg, crt);
if (rc) if (rc)
goto out_free; goto out_free;
init_completion(&resp_type.work); init_completion(&resp_type.work);
...@@ -1093,8 +1098,9 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq, ...@@ -1093,8 +1098,9 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq,
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
} }
out_free: out_free:
free_page((unsigned long) ap_msg->msg); free_page((unsigned long)ap_msg->msg);
ap_msg->private = NULL; ap_msg->private = NULL;
ap_msg->msg = NULL; ap_msg->msg = NULL;
return rc; return rc;
...@@ -1109,7 +1115,7 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq, ...@@ -1109,7 +1115,7 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq,
* by the caller with ap_init_message(). Also the caller has to * by the caller with ap_init_message(). Also the caller has to
* make sure ap_release_message() is always called even on failure. * make sure ap_release_message() is always called even on failure.
*/ */
int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcRB, int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcrb,
struct ap_message *ap_msg, struct ap_message *ap_msg,
unsigned int *func_code, unsigned short **dom) unsigned int *func_code, unsigned short **dom)
{ {
...@@ -1122,12 +1128,12 @@ int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcRB, ...@@ -1122,12 +1128,12 @@ int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcRB,
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->receive = zcrypt_msgtype6_receive; ap_msg->receive = zcrypt_msgtype6_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL); ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL);
if (!ap_msg->private) if (!ap_msg->private)
return -ENOMEM; return -ENOMEM;
return XCRB_msg_to_type6CPRB_msgX(userspace, ap_msg, xcRB, func_code, dom); return xcrb_msg_to_type6cprb_msgx(userspace, ap_msg, xcrb, func_code, dom);
} }
/* /*
...@@ -1135,10 +1141,10 @@ int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcRB, ...@@ -1135,10 +1141,10 @@ int prep_cca_ap_msg(bool userspace, struct ica_xcRB *xcRB,
* device to handle a send_cprb request. * device to handle a send_cprb request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* CEXxC device to the request distributor * CEXxC device to the request distributor
* @xcRB: pointer to the send_cprb request buffer * @xcrb: pointer to the send_cprb request buffer
*/ */
static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq, static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq,
struct ica_xcRB *xcRB, struct ica_xcRB *xcrb,
struct ap_message *ap_msg) struct ap_message *ap_msg)
{ {
int rc; int rc;
...@@ -1153,11 +1159,11 @@ static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq, ...@@ -1153,11 +1159,11 @@ static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq,
* Set the queue's reply buffer length minus 128 byte padding * Set the queue's reply buffer length minus 128 byte padding
* as reply limit for the card firmware. * as reply limit for the card firmware.
*/ */
msg->hdr.FromCardLen1 = min_t(unsigned int, msg->hdr.FromCardLen1, msg->hdr.fromcardlen1 = min_t(unsigned int, msg->hdr.fromcardlen1,
zq->reply.bufsize - 128); zq->reply.bufsize - 128);
if (msg->hdr.FromCardLen2) if (msg->hdr.fromcardlen2)
msg->hdr.FromCardLen2 = msg->hdr.fromcardlen2 =
zq->reply.bufsize - msg->hdr.FromCardLen1 - 128; zq->reply.bufsize - msg->hdr.fromcardlen1 - 128;
init_completion(&rtype->work); init_completion(&rtype->work);
rc = ap_queue_message(zq->queue, ap_msg); rc = ap_queue_message(zq->queue, ap_msg);
...@@ -1167,10 +1173,12 @@ static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq, ...@@ -1167,10 +1173,12 @@ static long zcrypt_msgtype6_send_cprb(bool userspace, struct zcrypt_queue *zq,
if (rc == 0) { if (rc == 0) {
rc = ap_msg->rc; rc = ap_msg->rc;
if (rc == 0) if (rc == 0)
rc = convert_response_xcrb(userspace, zq, ap_msg, xcRB); rc = convert_response_xcrb(userspace, zq, ap_msg, xcrb);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out: out:
if (rc) if (rc)
ZCRYPT_DBF_DBG("%s send cprb at dev=%02x.%04x rc=%d\n", ZCRYPT_DBF_DBG("%s send cprb at dev=%02x.%04x rc=%d\n",
...@@ -1201,7 +1209,7 @@ int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb, ...@@ -1201,7 +1209,7 @@ int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb,
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->receive = zcrypt_msgtype6_receive_ep11; ap_msg->receive = zcrypt_msgtype6_receive_ep11;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL); ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL);
if (!ap_msg->private) if (!ap_msg->private)
...@@ -1215,7 +1223,7 @@ int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb, ...@@ -1215,7 +1223,7 @@ int prep_ep11_ap_msg(bool userspace, struct ep11_urb *xcrb,
* device to handle a send_ep11_cprb request. * device to handle a send_ep11_cprb request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* CEX4P device to the request distributor * CEX4P device to the request distributor
* @xcRB: pointer to the ep11 user request block * @xcrb: pointer to the ep11 user request block
*/ */
static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue *zq, static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue *zq,
struct ep11_urb *xcrb, struct ep11_urb *xcrb,
...@@ -1265,7 +1273,7 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue * ...@@ -1265,7 +1273,7 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue *
} else { } else {
lfmt = 1; /* length format #1 */ lfmt = 1; /* length format #1 */
} }
payload_hdr = (struct pld_hdr *)((&(msg->pld_lenfmt))+lfmt); payload_hdr = (struct pld_hdr *)((&msg->pld_lenfmt) + lfmt);
payload_hdr->dom_val = (unsigned int) payload_hdr->dom_val = (unsigned int)
AP_QID_QUEUE(zq->queue->qid); AP_QID_QUEUE(zq->queue->qid);
} }
...@@ -1274,7 +1282,7 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue * ...@@ -1274,7 +1282,7 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue *
* Set the queue's reply buffer length minus the two prepend headers * Set the queue's reply buffer length minus the two prepend headers
* as reply limit for the card firmware. * as reply limit for the card firmware.
*/ */
msg->hdr.FromCardLen1 = zq->reply.bufsize - msg->hdr.fromcardlen1 = zq->reply.bufsize -
sizeof(struct type86_hdr) - sizeof(struct type86_fmt2_ext); sizeof(struct type86_hdr) - sizeof(struct type86_fmt2_ext);
init_completion(&rtype->work); init_completion(&rtype->work);
...@@ -1286,9 +1294,11 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue * ...@@ -1286,9 +1294,11 @@ static long zcrypt_msgtype6_send_ep11_cprb(bool userspace, struct zcrypt_queue *
rc = ap_msg->rc; rc = ap_msg->rc;
if (rc == 0) if (rc == 0)
rc = convert_response_ep11_xcrb(userspace, zq, ap_msg, xcrb); rc = convert_response_ep11_xcrb(userspace, zq, ap_msg, xcrb);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out: out:
if (rc) if (rc)
ZCRYPT_DBF_DBG("%s send cprb at dev=%02x.%04x rc=%d\n", ZCRYPT_DBF_DBG("%s send cprb at dev=%02x.%04x rc=%d\n",
...@@ -1309,13 +1319,13 @@ int prep_rng_ap_msg(struct ap_message *ap_msg, int *func_code, ...@@ -1309,13 +1319,13 @@ int prep_rng_ap_msg(struct ap_message *ap_msg, int *func_code,
if (!ap_msg->msg) if (!ap_msg->msg)
return -ENOMEM; return -ENOMEM;
ap_msg->receive = zcrypt_msgtype6_receive; ap_msg->receive = zcrypt_msgtype6_receive;
ap_msg->psmid = (((unsigned long long) current->pid) << 32) + ap_msg->psmid = (((unsigned long long)current->pid) << 32) +
atomic_inc_return(&zcrypt_step); atomic_inc_return(&zcrypt_step);
ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL); ap_msg->private = kmemdup(&resp_type, sizeof(resp_type), GFP_KERNEL);
if (!ap_msg->private) if (!ap_msg->private)
return -ENOMEM; return -ENOMEM;
rng_type6CPRB_msgX(ap_msg, ZCRYPT_RNG_BUFFER_SIZE, domain); rng_type6cprb_msgx(ap_msg, ZCRYPT_RNG_BUFFER_SIZE, domain);
*func_code = HWRNG; *func_code = HWRNG;
return 0; return 0;
...@@ -1354,9 +1364,10 @@ static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq, ...@@ -1354,9 +1364,10 @@ static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq,
rc = ap_msg->rc; rc = ap_msg->rc;
if (rc == 0) if (rc == 0)
rc = convert_response_rng(zq, ap_msg, buffer); rc = convert_response_rng(zq, ap_msg, buffer);
} else } else {
/* Signal pending. */ /* Signal pending. */
ap_cancel_message(zq->queue, ap_msg); ap_cancel_message(zq->queue, ap_msg);
}
out: out:
return rc; return rc;
} }
......
...@@ -45,14 +45,14 @@ struct type6_hdr { ...@@ -45,14 +45,14 @@ struct type6_hdr {
unsigned char reserved5[2]; /* 0x0000 */ unsigned char reserved5[2]; /* 0x0000 */
unsigned char function_code[2]; /* for PKD, 0x5044 (ascii 'PD') */ unsigned char function_code[2]; /* for PKD, 0x5044 (ascii 'PD') */
unsigned char reserved6[2]; /* 0x0000 */ unsigned char reserved6[2]; /* 0x0000 */
unsigned int ToCardLen1; /* (request CPRB len + 3) & -4 */ unsigned int tocardlen1; /* (request CPRB len + 3) & -4 */
unsigned int ToCardLen2; /* db len 0x00000000 for PKD */ unsigned int tocardlen2; /* db len 0x00000000 for PKD */
unsigned int ToCardLen3; /* 0x00000000 */ unsigned int tocardlen3; /* 0x00000000 */
unsigned int ToCardLen4; /* 0x00000000 */ unsigned int tocardlen4; /* 0x00000000 */
unsigned int FromCardLen1; /* response buffer length */ unsigned int fromcardlen1; /* response buffer length */
unsigned int FromCardLen2; /* db len 0x00000000 for PKD */ unsigned int fromcardlen2; /* db len 0x00000000 for PKD */
unsigned int FromCardLen3; /* 0x00000000 */ unsigned int fromcardlen3; /* 0x00000000 */
unsigned int FromCardLen4; /* 0x00000000 */ unsigned int fromcardlen4; /* 0x00000000 */
} __packed; } __packed;
/** /**
...@@ -116,7 +116,7 @@ int speed_idx_ep11(int); ...@@ -116,7 +116,7 @@ int speed_idx_ep11(int);
* @ap_dev: AP device pointer * @ap_dev: AP device pointer
* @ap_msg: pointer to AP message * @ap_msg: pointer to AP message
*/ */
static inline void rng_type6CPRB_msgX(struct ap_message *ap_msg, static inline void rng_type6cprb_msgx(struct ap_message *ap_msg,
unsigned int random_number_length, unsigned int random_number_length,
unsigned int *domain) unsigned int *domain)
{ {
...@@ -134,8 +134,8 @@ static inline void rng_type6CPRB_msgX(struct ap_message *ap_msg, ...@@ -134,8 +134,8 @@ static inline void rng_type6CPRB_msgX(struct ap_message *ap_msg,
.offset1 = 0x00000058, .offset1 = 0x00000058,
.agent_id = {'C', 'A'}, .agent_id = {'C', 'A'},
.function_code = {'R', 'L'}, .function_code = {'R', 'L'},
.ToCardLen1 = sizeof(*msg) - sizeof(msg->hdr), .tocardlen1 = sizeof(*msg) - sizeof(msg->hdr),
.FromCardLen1 = sizeof(*msg) - sizeof(msg->hdr), .fromcardlen1 = sizeof(*msg) - sizeof(msg->hdr),
}; };
static struct CPRBX local_cprbx = { static struct CPRBX local_cprbx = {
.cprb_len = 0x00dc, .cprb_len = 0x00dc,
...@@ -147,9 +147,9 @@ static inline void rng_type6CPRB_msgX(struct ap_message *ap_msg, ...@@ -147,9 +147,9 @@ static inline void rng_type6CPRB_msgX(struct ap_message *ap_msg,
}; };
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
msg->hdr.FromCardLen2 = random_number_length, msg->hdr.fromcardlen2 = random_number_length;
msg->cprbx = local_cprbx; msg->cprbx = local_cprbx;
msg->cprbx.rpl_datal = random_number_length, msg->cprbx.rpl_datal = random_number_length;
memcpy(msg->function_code, msg->hdr.function_code, 0x02); memcpy(msg->function_code, msg->hdr.function_code, 0x02);
msg->rule_length = 0x0a; msg->rule_length = 0x0a;
memcpy(msg->rule, "RANDOM ", 8); memcpy(msg->rule, "RANDOM ", 8);
......
...@@ -114,7 +114,7 @@ struct zcrypt_queue *zcrypt_queue_alloc(size_t reply_buf_size) ...@@ -114,7 +114,7 @@ struct zcrypt_queue *zcrypt_queue_alloc(size_t reply_buf_size)
{ {
struct zcrypt_queue *zq; struct zcrypt_queue *zq;
zq = kzalloc(sizeof(struct zcrypt_queue), GFP_KERNEL); zq = kzalloc(sizeof(*zq), GFP_KERNEL);
if (!zq) if (!zq)
return NULL; return NULL;
zq->reply.msg = kmalloc(reply_buf_size, GFP_KERNEL); zq->reply.msg = kmalloc(reply_buf_size, GFP_KERNEL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment