s390 updates for 5.5-rc7
- Fix printing misleading Secure-IPL enabled message when it is not. - Fix a race condition between host ap bus and guest ap bus doing device reset in crypto code. - Fix sanity check in CCA cipher key function (CCA AES cipher key support), which fails otherwise. -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEE3QHqV+H2a8xAv27vjYWKoQLXFBgFAl4i+UgACgkQjYWKoQLX FBg0Pgf/VYdOoZCo868B6H7jR3xbPmaMz5wA57QfbPhmUkdF7ELBSDj7j+dvfmEy kb9Tkn2cZOj40H0jwKWawnz5HA+iKtkXBcB8THB55ThlD6hgpZo8nzul1EomcxDx NY7vxlaIpgWZgpT91Z1JxKOLpxIo0mIUH8+XITgZBU4qV9yrycpePzV7kz5vEieG 9BFObo0VtNYBnNwm68YuXsg1FKkezWktFAmdLHvxQz6wXUL5kBb/1dZkKGkg/0Qc jsJSglY2I2uCqDesIRHxl6waWgj79nrb3T5WWYh9IL6btXfAFDTNfx7WaCWU55kd pCfViqDJYL3idW8AfPkgXNaSclWtaQ== =q9ev -----END PGP SIGNATURE----- Merge tag 's390-5.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux Pull s390 fixes from Vasily Gorbik: - Fix printing misleading Secure-IPL enabled message when it is not. - Fix a race condition between host ap bus and guest ap bus doing device reset in crypto code. - Fix sanity check in CCA cipher key function (CCA AES cipher key support), which fails otherwise. * tag 's390-5.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/setup: Fix secure ipl message s390/zcrypt: move ap device reset from bus to driver code s390/zcrypt: Fix CCA cipher key gen with clear key value function
This commit is contained in:
commit
2324de6fab
|
@ -1052,7 +1052,7 @@ static void __init log_component_list(void)
|
|||
|
||||
if (!early_ipl_comp_list_addr)
|
||||
return;
|
||||
if (ipl_block.hdr.flags & IPL_PL_FLAG_IPLSR)
|
||||
if (ipl_block.hdr.flags & IPL_PL_FLAG_SIPL)
|
||||
pr_info("Linux is running with Secure-IPL enabled\n");
|
||||
else
|
||||
pr_info("Linux is running with Secure-IPL disabled\n");
|
||||
|
|
|
@ -793,8 +793,6 @@ static int ap_device_probe(struct device *dev)
|
|||
drvres = ap_drv->flags & AP_DRIVER_FLAG_DEFAULT;
|
||||
if (!!devres != !!drvres)
|
||||
return -ENODEV;
|
||||
/* (re-)init queue's state machine */
|
||||
ap_queue_reinit_state(to_ap_queue(dev));
|
||||
}
|
||||
|
||||
/* Add queue/card to list of active queues/cards */
|
||||
|
|
|
@ -261,7 +261,7 @@ void ap_queue_prepare_remove(struct ap_queue *aq);
|
|||
void ap_queue_remove(struct ap_queue *aq);
|
||||
void ap_queue_suspend(struct ap_device *ap_dev);
|
||||
void ap_queue_resume(struct ap_device *ap_dev);
|
||||
void ap_queue_reinit_state(struct ap_queue *aq);
|
||||
void ap_queue_init_state(struct ap_queue *aq);
|
||||
|
||||
struct ap_card *ap_card_create(int id, int queue_depth, int raw_device_type,
|
||||
int comp_device_type, unsigned int functions);
|
||||
|
|
|
@ -638,7 +638,7 @@ struct ap_queue *ap_queue_create(ap_qid_t qid, int device_type)
|
|||
aq->ap_dev.device.type = &ap_queue_type;
|
||||
aq->ap_dev.device_type = device_type;
|
||||
aq->qid = qid;
|
||||
aq->state = AP_STATE_RESET_START;
|
||||
aq->state = AP_STATE_UNBOUND;
|
||||
aq->interrupt = AP_INTR_DISABLED;
|
||||
spin_lock_init(&aq->lock);
|
||||
INIT_LIST_HEAD(&aq->list);
|
||||
|
@ -771,10 +771,11 @@ void ap_queue_remove(struct ap_queue *aq)
|
|||
spin_unlock_bh(&aq->lock);
|
||||
}
|
||||
|
||||
void ap_queue_reinit_state(struct ap_queue *aq)
|
||||
void ap_queue_init_state(struct ap_queue *aq)
|
||||
{
|
||||
spin_lock_bh(&aq->lock);
|
||||
aq->state = AP_STATE_RESET_START;
|
||||
ap_wait(ap_sm_event(aq, AP_EVENT_POLL));
|
||||
spin_unlock_bh(&aq->lock);
|
||||
}
|
||||
EXPORT_SYMBOL(ap_queue_init_state);
|
||||
|
|
|
@ -1037,8 +1037,8 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
|
|||
prepparm = (struct iprepparm *) prepcblk->rpl_parmb;
|
||||
|
||||
/* do some plausibility checks on the key block */
|
||||
if (prepparm->kb.len < 120 + 5 * sizeof(uint16_t) ||
|
||||
prepparm->kb.len > 136 + 5 * sizeof(uint16_t)) {
|
||||
if (prepparm->kb.len < 120 + 3 * sizeof(uint16_t) ||
|
||||
prepparm->kb.len > 136 + 3 * sizeof(uint16_t)) {
|
||||
DEBUG_ERR("%s reply with invalid or unknown key block\n",
|
||||
__func__);
|
||||
rc = -EIO;
|
||||
|
|
|
@ -175,6 +175,7 @@ static int zcrypt_cex2a_queue_probe(struct ap_device *ap_dev)
|
|||
zq->queue = aq;
|
||||
zq->online = 1;
|
||||
atomic_set(&zq->load, 0);
|
||||
ap_queue_init_state(aq);
|
||||
ap_queue_init_reply(aq, &zq->reply);
|
||||
aq->request_timeout = CEX2A_CLEANUP_TIME,
|
||||
aq->private = zq;
|
||||
|
|
|
@ -220,6 +220,7 @@ static int zcrypt_cex2c_queue_probe(struct ap_device *ap_dev)
|
|||
zq->queue = aq;
|
||||
zq->online = 1;
|
||||
atomic_set(&zq->load, 0);
|
||||
ap_rapq(aq->qid);
|
||||
rc = zcrypt_cex2c_rng_supported(aq);
|
||||
if (rc < 0) {
|
||||
zcrypt_queue_free(zq);
|
||||
|
@ -231,6 +232,7 @@ static int zcrypt_cex2c_queue_probe(struct ap_device *ap_dev)
|
|||
else
|
||||
zq->ops = zcrypt_msgtype(MSGTYPE06_NAME,
|
||||
MSGTYPE06_VARIANT_NORNG);
|
||||
ap_queue_init_state(aq);
|
||||
ap_queue_init_reply(aq, &zq->reply);
|
||||
aq->request_timeout = CEX2C_CLEANUP_TIME;
|
||||
aq->private = zq;
|
||||
|
|
|
@ -381,6 +381,7 @@ static int zcrypt_cex4_queue_probe(struct ap_device *ap_dev)
|
|||
zq->queue = aq;
|
||||
zq->online = 1;
|
||||
atomic_set(&zq->load, 0);
|
||||
ap_queue_init_state(aq);
|
||||
ap_queue_init_reply(aq, &zq->reply);
|
||||
aq->request_timeout = CEX4_CLEANUP_TIME,
|
||||
aq->private = zq;
|
||||
|
|
Loading…
Reference in New Issue