aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Cox2012-09-28 06:20:02 -0500
committerDavid Howells2012-09-28 06:20:02 -0500
commita84a921978b7d56e0e4b87ffaca6367429b4d8ff (patch)
tree03edfc3a5039edd443078d7adc20d585be89022b /security
parent631527703d1aa2f0c5dc2af0d998f4da95c83f0e (diff)
downloadkernel-common-a84a921978b7d56e0e4b87ffaca6367429b4d8ff.tar.gz
kernel-common-a84a921978b7d56e0e4b87ffaca6367429b4d8ff.tar.xz
kernel-common-a84a921978b7d56e0e4b87ffaca6367429b4d8ff.zip
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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index 3364fbf4680..a0d373f7681 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 1120err:
1121 if (iov != iovstack) 1121 if (iov != iovstack)
1122 kfree(iov); 1122 kfree(iov);
1123 return ret; 1123 return ret;