Return ERR_PTR(-ENOMEM) immediately if memory allocation fails, instead of using goto and returning a NULL pointer, and remove the now-unused 'out' label.
At the call site, check 'ascii_buf' with IS_ERR() and propagate the error code returned by datablob_format(). Signed-off-by: Thorsten Blum <[email protected]> --- security/keys/encrypted-keys/encrypted.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c index be1f2118447c..25df00b7dbe9 100644 --- a/security/keys/encrypted-keys/encrypted.c +++ b/security/keys/encrypted-keys/encrypted.c @@ -276,7 +276,7 @@ static char *datablob_format(struct encrypted_key_payload *epayload, ascii_buf = kmalloc(asciiblob_len + 1, GFP_KERNEL); if (!ascii_buf) - goto out; + return ERR_PTR(-ENOMEM); ascii_buf[asciiblob_len] = '\0'; @@ -288,7 +288,6 @@ static char *datablob_format(struct encrypted_key_payload *epayload, bufp = &ascii_buf[len]; for (i = 0; i < (asciiblob_len - len) / 2; i++) bufp = hex_byte_pack(bufp, iv[i]); -out: return ascii_buf; } @@ -932,8 +931,8 @@ static long encrypted_read(const struct key *key, char *buffer, goto out; ascii_buf = datablob_format(epayload, asciiblob_len); - if (!ascii_buf) { - ret = -ENOMEM; + if (IS_ERR(ascii_buf)) { + ret = PTR_ERR(ascii_buf); goto out; } -- 2.51.0
