diff options
Diffstat (limited to 'net/rxrpc/ar-key.c')
-rw-r--r-- | net/rxrpc/ar-key.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/rxrpc/ar-key.c b/net/rxrpc/ar-key.c index 43ea7de2fc8e..4cba13e46ffd 100644 --- a/net/rxrpc/ar-key.c +++ b/net/rxrpc/ar-key.c | |||
@@ -306,10 +306,9 @@ static int rxrpc_krb5_decode_tagged_data(struct krb5_tagged_data *td, | |||
306 | td->data_len = len; | 306 | td->data_len = len; |
307 | 307 | ||
308 | if (len > 0) { | 308 | if (len > 0) { |
309 | td->data = kmalloc(len, GFP_KERNEL); | 309 | td->data = kmemdup(xdr, len, GFP_KERNEL); |
310 | if (!td->data) | 310 | if (!td->data) |
311 | return -ENOMEM; | 311 | return -ENOMEM; |
312 | memcpy(td->data, xdr, len); | ||
313 | len = (len + 3) & ~3; | 312 | len = (len + 3) & ~3; |
314 | toklen -= len; | 313 | toklen -= len; |
315 | xdr += len >> 2; | 314 | xdr += len >> 2; |
@@ -401,10 +400,9 @@ static int rxrpc_krb5_decode_ticket(u8 **_ticket, u16 *_tktlen, | |||
401 | _debug("ticket len %u", len); | 400 | _debug("ticket len %u", len); |
402 | 401 | ||
403 | if (len > 0) { | 402 | if (len > 0) { |
404 | *_ticket = kmalloc(len, GFP_KERNEL); | 403 | *_ticket = kmemdup(xdr, len, GFP_KERNEL); |
405 | if (!*_ticket) | 404 | if (!*_ticket) |
406 | return -ENOMEM; | 405 | return -ENOMEM; |
407 | memcpy(*_ticket, xdr, len); | ||
408 | len = (len + 3) & ~3; | 406 | len = (len + 3) & ~3; |
409 | toklen -= len; | 407 | toklen -= len; |
410 | xdr += len >> 2; | 408 | xdr += len >> 2; |