X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fceph%2Fcrypto.c;h=af14cb425164d068d8a6272e1d9da1491ccd5f74;hb=c075b13098b399dc565b4d53f42047a8d40ed3ba;hp=9da7fdd3cd8ae85b23050f2bf35abf5db1054b37;hpb=19ec6caca2da706f11646249ba280177fec359fa;p=~andy%2Flinux diff --git a/net/ceph/crypto.c b/net/ceph/crypto.c index 9da7fdd3cd8..af14cb42516 100644 --- a/net/ceph/crypto.c +++ b/net/ceph/crypto.c @@ -423,14 +423,15 @@ int ceph_encrypt2(struct ceph_crypto_key *secret, void *dst, size_t *dst_len, } } -int ceph_key_instantiate(struct key *key, const void *data, size_t datalen) +int ceph_key_instantiate(struct key *key, struct key_preparsed_payload *prep) { struct ceph_crypto_key *ckey; + size_t datalen = prep->datalen; int ret; void *p; ret = -EINVAL; - if (datalen <= 0 || datalen > 32767 || !data) + if (datalen <= 0 || datalen > 32767 || !prep->data) goto err; ret = key_payload_reserve(key, datalen); @@ -443,8 +444,8 @@ int ceph_key_instantiate(struct key *key, const void *data, size_t datalen) goto err; /* TODO ceph_crypto_key_decode should really take const input */ - p = (void *)data; - ret = ceph_crypto_key_decode(ckey, &p, (char*)data+datalen); + p = (void *)prep->data; + ret = ceph_crypto_key_decode(ckey, &p, (char*)prep->data+datalen); if (ret < 0) goto err_ckey;