lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 1070/1157] kexec: clean up arch_kexec_kernel_verify_sig
    Date
    From: Coiby Xu <coxu@redhat.com>

    [ Upstream commit 689a71493bd2f31c024f8c0395f85a1fd4b2138e ]

    Before commit 105e10e2cf1c ("kexec_file: drop weak attribute from
    functions"), there was already no arch-specific implementation
    of arch_kexec_kernel_verify_sig. With weak attribute dropped by that
    commit, arch_kexec_kernel_verify_sig is completely useless. So clean it
    up.

    Note later patches are dependent on this patch so it should be backported
    to the stable tree as well.

    Cc: stable@vger.kernel.org
    Suggested-by: Eric W. Biederman <ebiederm@xmission.com>
    Reviewed-by: Michal Suchanek <msuchanek@suse.de>
    Acked-by: Baoquan He <bhe@redhat.com>
    Signed-off-by: Coiby Xu <coxu@redhat.com>
    [zohar@linux.ibm.com: reworded patch description "Note"]
    Link: https://lore.kernel.org/linux-integrity/20220714134027.394370-1-coxu@redhat.com/
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    include/linux/kexec.h | 5 -----
    kernel/kexec_file.c | 33 +++++++++++++--------------------
    2 files changed, 13 insertions(+), 25 deletions(-)

    diff --git a/include/linux/kexec.h b/include/linux/kexec.h
    index 6958c6b471f4..6e7510f39368 100644
    --- a/include/linux/kexec.h
    +++ b/include/linux/kexec.h
    @@ -212,11 +212,6 @@ static inline void *arch_kexec_kernel_image_load(struct kimage *image)
    }
    #endif

    -#ifdef CONFIG_KEXEC_SIG
    -int arch_kexec_kernel_verify_sig(struct kimage *image, void *buf,
    - unsigned long buf_len);
    -#endif
    -
    extern int kexec_add_buffer(struct kexec_buf *kbuf);
    int kexec_locate_mem_hole(struct kexec_buf *kbuf);

    diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
    index 0c27c81351ee..6dc1294c90fc 100644
    --- a/kernel/kexec_file.c
    +++ b/kernel/kexec_file.c
    @@ -81,24 +81,6 @@ int kexec_image_post_load_cleanup_default(struct kimage *image)
    return image->fops->cleanup(image->image_loader_data);
    }

    -#ifdef CONFIG_KEXEC_SIG
    -static int kexec_image_verify_sig_default(struct kimage *image, void *buf,
    - unsigned long buf_len)
    -{
    - if (!image->fops || !image->fops->verify_sig) {
    - pr_debug("kernel loader does not support signature verification.\n");
    - return -EKEYREJECTED;
    - }
    -
    - return image->fops->verify_sig(buf, buf_len);
    -}
    -
    -int arch_kexec_kernel_verify_sig(struct kimage *image, void *buf, unsigned long buf_len)
    -{
    - return kexec_image_verify_sig_default(image, buf, buf_len);
    -}
    -#endif
    -
    /*
    * Free up memory used by kernel, initrd, and command line. This is temporary
    * memory allocation which is not needed any more after these buffers have
    @@ -141,13 +123,24 @@ void kimage_file_post_load_cleanup(struct kimage *image)
    }

    #ifdef CONFIG_KEXEC_SIG
    +static int kexec_image_verify_sig(struct kimage *image, void *buf,
    + unsigned long buf_len)
    +{
    + if (!image->fops || !image->fops->verify_sig) {
    + pr_debug("kernel loader does not support signature verification.\n");
    + return -EKEYREJECTED;
    + }
    +
    + return image->fops->verify_sig(buf, buf_len);
    +}
    +
    static int
    kimage_validate_signature(struct kimage *image)
    {
    int ret;

    - ret = arch_kexec_kernel_verify_sig(image, image->kernel_buf,
    - image->kernel_buf_len);
    + ret = kexec_image_verify_sig(image, image->kernel_buf,
    + image->kernel_buf_len);
    if (ret) {

    if (sig_enforce) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 03:00    [W:4.116 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site