Change a couple of breaks to gotos, remove multiple unnecessary checks. Signed-off-by: Youling Tang <tangyouling@xxxxxxxxxxx> Acked-by: Dave Young <dyoung@xxxxxxxxxx> Suggested-by: Joe Perches <joe@xxxxxxxxxxx> --- kernel/kexec_file.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 78c0837..ec8b716 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -763,7 +763,7 @@ static int kexec_calculate_store_digests(struct kimage *image) ret = crypto_shash_update(desc, ksegment->kbuf, ksegment->bufsz); if (ret) - break; + goto out_free_digest; /* * Assume rest of the buffer is filled with zero and @@ -777,32 +777,26 @@ static int kexec_calculate_store_digests(struct kimage *image) bytes = zero_buf_sz; ret = crypto_shash_update(desc, zero_buf, bytes); if (ret) - break; + goto out_free_digest; nullsz -= bytes; } - if (ret) - break; - sha_regions[j].start = ksegment->mem; sha_regions[j].len = ksegment->memsz; j++; } - if (!ret) { - ret = crypto_shash_final(desc, digest); - if (ret) - goto out_free_digest; - ret = kexec_purgatory_get_set_symbol(image, "purgatory_sha_regions", - sha_regions, sha_region_sz, 0); - if (ret) - goto out_free_digest; + ret = crypto_shash_final(desc, digest); + if (ret) + goto out_free_digest; - ret = kexec_purgatory_get_set_symbol(image, "purgatory_sha256_digest", - digest, SHA256_DIGEST_SIZE, 0); - if (ret) - goto out_free_digest; - } + ret = kexec_purgatory_get_set_symbol(image, "purgatory_sha_regions", + sha_regions, sha_region_sz, 0); + if (ret) + goto out_free_digest; + + ret = kexec_purgatory_get_set_symbol(image, "purgatory_sha256_digest", + digest, SHA256_DIGEST_SIZE, 0); out_free_digest: kfree(digest); -- 2.1.0 _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec