diff options
author | Alan Cox <alan@linux.intel.com> | 2012-09-28 07:20:02 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-09-28 07:20:02 -0400 |
commit | a84a921978b7d56e0e4b87ffaca6367429b4d8ff (patch) | |
tree | 03edfc3a5039edd443078d7adc20d585be89022b /security | |
parent | 631527703d1aa2f0c5dc2af0d998f4da95c83f0e (diff) |
key: Fix resource leak
On an error iov may still have been reallocated and need freeing
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/keys/keyctl.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index 3364fbf46807..a0d373f76815 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c | |||
@@ -1112,12 +1112,12 @@ long keyctl_instantiate_key_iov(key_serial_t id, | |||
1112 | ret = rw_copy_check_uvector(WRITE, _payload_iov, ioc, | 1112 | ret = rw_copy_check_uvector(WRITE, _payload_iov, ioc, |
1113 | ARRAY_SIZE(iovstack), iovstack, &iov); | 1113 | ARRAY_SIZE(iovstack), iovstack, &iov); |
1114 | if (ret < 0) | 1114 | if (ret < 0) |
1115 | return ret; | 1115 | goto err; |
1116 | if (ret == 0) | 1116 | if (ret == 0) |
1117 | goto no_payload_free; | 1117 | goto no_payload_free; |
1118 | 1118 | ||
1119 | ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid); | 1119 | ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid); |
1120 | 1120 | err: | |
1121 | if (iov != iovstack) | 1121 | if (iov != iovstack) |
1122 | kfree(iov); | 1122 | kfree(iov); |
1123 | return ret; | 1123 | return ret; |