From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Julien Thierry <julien.thierry@arm.com>
Cc: herbert@gondor.apana.org.au, bhe@redhat.com,
ard.biesheuvel@linaro.org, catalin.marinas@arm.com,
will.deacon@arm.com, linux-kernel@vger.kernel.org,
kexec@lists.infradead.org, dhowells@redhat.com, arnd@arndb.de,
linux-arm-kernel@lists.infradead.org, mpe@ellerman.id.au,
bauerman@linux.vnet.ibm.com, akpm@linux-foundation.org,
dyoung@redhat.com, davem@davemloft.net, vgoyal@redhat.com
Subject: Re: [PATCH v5 03/10] kexec_file: factor out arch_kexec_kernel_*() from x86, powerpc
Date: Fri, 13 Oct 2017 17:47:23 +0900 [thread overview]
Message-ID: <20171013084721.GH6756@linaro.org> (raw)
In-Reply-To: <cbeb01e5-8758-1205-1e79-de01de899ef6@arm.com>
On Wed, Oct 11, 2017 at 09:24:16AM +0100, Julien Thierry wrote:
>
>
> On 11/10/17 06:07, AKASHI Takahiro wrote:
> >On Tue, Oct 10, 2017 at 12:02:01PM +0100, Julien Thierry wrote:
> >
> >[snip]
> >
> >>>--- a/kernel/kexec_file.c
> >>>+++ b/kernel/kexec_file.c
> >>>@@ -26,30 +26,79 @@
> >>> #include <linux/vmalloc.h>
> >>> #include "kexec_internal.h"
> >>>
> >>>+const __weak struct kexec_file_ops * const kexec_file_loaders[] = {NULL};
> >>>+
> >>> static int kexec_calculate_store_digests(struct kimage *image);
> >>>
> >>>+int _kexec_kernel_image_probe(struct kimage *image, void *buf,
> >>>+ unsigned long buf_len)
> >>>+{
> >>>+ const struct kexec_file_ops *fops;
> >>>+ int ret = -ENOEXEC;
> >>>+
> >>>+ for (fops = kexec_file_loaders[0]; fops && fops->probe; ++fops) {
> >>
> >>Hmm, that's not gonna work (and I see that what I said in the previous
> >>patch was not 100% correct either).
> >
> >Can you elaborate this a bit more?
> >
>
> Yes. With the current state of the loop, you are going to check the first
> element of kexec_file_loaders[0], and what will get incremented is the
> pointer contained in kexec_file_loaders rather than a pointer pointer
> pointing at an element of kexec_file_loaders.
Aha, got it. I thought that you were talking about const usage.
Since I don't want to bother anybody with my repeated minor updates,
I'd like to post a new version, v6, only if you don't have any more
comments and if Catalin and Will are likely to accept my other patches.
Thanks,
-Takahiro AKASHI
>
> >I'm sure that, with my code, any member of fops, cannot be changed;
> >"const struct kexec_file_ops *fops" means that fops is a pointer to
> >"constant sturct kexec_file_ops," while "struct kexec_file_ops *
> >const kexec_file_loaders[]" means that kexec_file_loaders is a "constant
> >array" of pointers to "constant struct kexec_file_ops."
> >
>
> Hmm, right, my suggestion below doesn't have the right constness, fops
> should be declared as:
> const struct kexec_file_ops * const * fops;
>
> This can point at elements of kexec_file_loaders.
>
> Hope this makes more sense.
>
> Cheers,
>
> >Thanks,
> >-Takahiro AKASHI
> >
> >
> >>'fops' should be of type 'const struct kexec_file_ops **', and the loop
> >>should be:
> >>
> >>for (fops = &kexec_file_loaders[0]; *fops && (*fops)->probe; ++fops)
> >>
> >>With some additional dereferences in the body of the loop.
> >>
> >>Unless you prefer the previous state of the loop (with i and the break
> >>inside), but I still think this looks better.
> >>
> >>Cheers,
> >>
>
>
> --
> Julien Thierry
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: takahiro.akashi@linaro.org (AKASHI Takahiro)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 03/10] kexec_file: factor out arch_kexec_kernel_*() from x86, powerpc
Date: Fri, 13 Oct 2017 17:47:23 +0900 [thread overview]
Message-ID: <20171013084721.GH6756@linaro.org> (raw)
In-Reply-To: <cbeb01e5-8758-1205-1e79-de01de899ef6@arm.com>
On Wed, Oct 11, 2017 at 09:24:16AM +0100, Julien Thierry wrote:
>
>
> On 11/10/17 06:07, AKASHI Takahiro wrote:
> >On Tue, Oct 10, 2017 at 12:02:01PM +0100, Julien Thierry wrote:
> >
> >[snip]
> >
> >>>--- a/kernel/kexec_file.c
> >>>+++ b/kernel/kexec_file.c
> >>>@@ -26,30 +26,79 @@
> >>> #include <linux/vmalloc.h>
> >>> #include "kexec_internal.h"
> >>>
> >>>+const __weak struct kexec_file_ops * const kexec_file_loaders[] = {NULL};
> >>>+
> >>> static int kexec_calculate_store_digests(struct kimage *image);
> >>>
> >>>+int _kexec_kernel_image_probe(struct kimage *image, void *buf,
> >>>+ unsigned long buf_len)
> >>>+{
> >>>+ const struct kexec_file_ops *fops;
> >>>+ int ret = -ENOEXEC;
> >>>+
> >>>+ for (fops = kexec_file_loaders[0]; fops && fops->probe; ++fops) {
> >>
> >>Hmm, that's not gonna work (and I see that what I said in the previous
> >>patch was not 100% correct either).
> >
> >Can you elaborate this a bit more?
> >
>
> Yes. With the current state of the loop, you are going to check the first
> element of kexec_file_loaders[0], and what will get incremented is the
> pointer contained in kexec_file_loaders rather than a pointer pointer
> pointing at an element of kexec_file_loaders.
Aha, got it. I thought that you were talking about const usage.
Since I don't want to bother anybody with my repeated minor updates,
I'd like to post a new version, v6, only if you don't have any more
comments and if Catalin and Will are likely to accept my other patches.
Thanks,
-Takahiro AKASHI
>
> >I'm sure that, with my code, any member of fops, cannot be changed;
> >"const struct kexec_file_ops *fops" means that fops is a pointer to
> >"constant sturct kexec_file_ops," while "struct kexec_file_ops *
> >const kexec_file_loaders[]" means that kexec_file_loaders is a "constant
> >array" of pointers to "constant struct kexec_file_ops."
> >
>
> Hmm, right, my suggestion below doesn't have the right constness, fops
> should be declared as:
> const struct kexec_file_ops * const * fops;
>
> This can point at elements of kexec_file_loaders.
>
> Hope this makes more sense.
>
> Cheers,
>
> >Thanks,
> >-Takahiro AKASHI
> >
> >
> >>'fops' should be of type 'const struct kexec_file_ops **', and the loop
> >>should be:
> >>
> >>for (fops = &kexec_file_loaders[0]; *fops && (*fops)->probe; ++fops)
> >>
> >>With some additional dereferences in the body of the loop.
> >>
> >>Unless you prefer the previous state of the loop (with i and the break
> >>inside), but I still think this looks better.
> >>
> >>Cheers,
> >>
>
>
> --
> Julien Thierry
WARNING: multiple messages have this Message-ID (diff)
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Julien Thierry <julien.thierry@arm.com>
Cc: catalin.marinas@arm.com, will.deacon@arm.com,
bauerman@linux.vnet.ibm.com, dhowells@redhat.com,
vgoyal@redhat.com, herbert@gondor.apana.org.au,
davem@davemloft.net, akpm@linux-foundation.org,
mpe@ellerman.id.au, dyoung@redhat.com, bhe@redhat.com,
arnd@arndb.de, ard.biesheuvel@linaro.org,
kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 03/10] kexec_file: factor out arch_kexec_kernel_*() from x86, powerpc
Date: Fri, 13 Oct 2017 17:47:23 +0900 [thread overview]
Message-ID: <20171013084721.GH6756@linaro.org> (raw)
In-Reply-To: <cbeb01e5-8758-1205-1e79-de01de899ef6@arm.com>
On Wed, Oct 11, 2017 at 09:24:16AM +0100, Julien Thierry wrote:
>
>
> On 11/10/17 06:07, AKASHI Takahiro wrote:
> >On Tue, Oct 10, 2017 at 12:02:01PM +0100, Julien Thierry wrote:
> >
> >[snip]
> >
> >>>--- a/kernel/kexec_file.c
> >>>+++ b/kernel/kexec_file.c
> >>>@@ -26,30 +26,79 @@
> >>> #include <linux/vmalloc.h>
> >>> #include "kexec_internal.h"
> >>>
> >>>+const __weak struct kexec_file_ops * const kexec_file_loaders[] = {NULL};
> >>>+
> >>> static int kexec_calculate_store_digests(struct kimage *image);
> >>>
> >>>+int _kexec_kernel_image_probe(struct kimage *image, void *buf,
> >>>+ unsigned long buf_len)
> >>>+{
> >>>+ const struct kexec_file_ops *fops;
> >>>+ int ret = -ENOEXEC;
> >>>+
> >>>+ for (fops = kexec_file_loaders[0]; fops && fops->probe; ++fops) {
> >>
> >>Hmm, that's not gonna work (and I see that what I said in the previous
> >>patch was not 100% correct either).
> >
> >Can you elaborate this a bit more?
> >
>
> Yes. With the current state of the loop, you are going to check the first
> element of kexec_file_loaders[0], and what will get incremented is the
> pointer contained in kexec_file_loaders rather than a pointer pointer
> pointing at an element of kexec_file_loaders.
Aha, got it. I thought that you were talking about const usage.
Since I don't want to bother anybody with my repeated minor updates,
I'd like to post a new version, v6, only if you don't have any more
comments and if Catalin and Will are likely to accept my other patches.
Thanks,
-Takahiro AKASHI
>
> >I'm sure that, with my code, any member of fops, cannot be changed;
> >"const struct kexec_file_ops *fops" means that fops is a pointer to
> >"constant sturct kexec_file_ops," while "struct kexec_file_ops *
> >const kexec_file_loaders[]" means that kexec_file_loaders is a "constant
> >array" of pointers to "constant struct kexec_file_ops."
> >
>
> Hmm, right, my suggestion below doesn't have the right constness, fops
> should be declared as:
> const struct kexec_file_ops * const * fops;
>
> This can point at elements of kexec_file_loaders.
>
> Hope this makes more sense.
>
> Cheers,
>
> >Thanks,
> >-Takahiro AKASHI
> >
> >
> >>'fops' should be of type 'const struct kexec_file_ops **', and the loop
> >>should be:
> >>
> >>for (fops = &kexec_file_loaders[0]; *fops && (*fops)->probe; ++fops)
> >>
> >>With some additional dereferences in the body of the loop.
> >>
> >>Unless you prefer the previous state of the loop (with i and the break
> >>inside), but I still think this looks better.
> >>
> >>Cheers,
> >>
>
>
> --
> Julien Thierry
next prev parent reply other threads:[~2017-10-13 8:44 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-10 6:36 [PATCH v5 00/10] arm64: kexec: add kexec_file_load() support AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 01/10] include: pe.h: remove message[] from mz header definition AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 02/10] resource: add walk_system_ram_res_rev() AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 03/10] kexec_file: factor out arch_kexec_kernel_*() from x86, powerpc AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 11:02 ` Julien Thierry
2017-10-10 11:02 ` Julien Thierry
2017-10-10 11:02 ` Julien Thierry
2017-10-11 5:07 ` AKASHI Takahiro
2017-10-11 5:07 ` AKASHI Takahiro
2017-10-11 5:07 ` AKASHI Takahiro
2017-10-11 6:55 ` Ard Biesheuvel
2017-10-11 6:55 ` Ard Biesheuvel
2017-10-11 6:55 ` Ard Biesheuvel
2017-10-11 8:24 ` Julien Thierry
2017-10-11 8:24 ` Julien Thierry
2017-10-11 8:24 ` Julien Thierry
2017-10-13 8:47 ` AKASHI Takahiro [this message]
2017-10-13 8:47 ` AKASHI Takahiro
2017-10-13 8:47 ` AKASHI Takahiro
2017-10-10 11:06 ` Julien Thierry
2017-10-10 11:06 ` Julien Thierry
2017-10-10 11:06 ` Julien Thierry
2017-10-14 11:37 ` kbuild test robot
2017-10-14 11:37 ` kbuild test robot
2017-10-14 11:37 ` kbuild test robot
2017-10-19 4:36 ` AKASHI Takahiro
2017-10-19 4:36 ` AKASHI Takahiro
2017-10-19 4:36 ` AKASHI Takahiro
2017-10-15 3:10 ` kbuild test robot
2017-10-15 3:10 ` kbuild test robot
2017-10-15 3:10 ` kbuild test robot
2017-10-10 6:36 ` [PATCH v5 04/10] kexec_file: factor out crashdump elf header function from x86 AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 05/10] asm-generic: add kexec_file_load system call to unistd.h AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 06/10] arm64: kexec_file: create purgatory AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 07/10] arm64: kexec_file: load initrd, device-tree and purgatory segments AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 08/10] arm64: kexec_file: set up for crash dump adding elf core header AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 09/10] arm64: enable KEXEC_FILE config AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` [PATCH v5 10/10] arm64: kexec_file: add Image format support AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
2017-10-10 6:36 ` AKASHI Takahiro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171013084721.GH6756@linaro.org \
--to=takahiro.akashi@linaro.org \
--cc=akpm@linux-foundation.org \
--cc=ard.biesheuvel@linaro.org \
--cc=arnd@arndb.de \
--cc=bauerman@linux.vnet.ibm.com \
--cc=bhe@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=dyoung@redhat.com \
--cc=herbert@gondor.apana.org.au \
--cc=julien.thierry@arm.com \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
--cc=vgoyal@redhat.com \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.