* [PATCH] efi: Fix free_end build warning @ 2014-11-12 20:27 Geoff Levand 2014-11-13 11:44 ` Will Deacon 2014-11-14 10:22 ` Will Deacon 0 siblings, 2 replies; 6+ messages in thread From: Geoff Levand @ 2014-11-12 20:27 UTC (permalink / raw) To: linux-arm-kernel Initialize the free_end variable to zero. Fixes build warnings like these: arch/arm64/kernel/efi.c: warning: ?free_end? may be used uninitialized in this function Signed-off-by: Geoff Levand <geoff@infradead.org> --- Got this with the latest arm64/for-next/core branch. Please consider. -Geoff arch/arm64/kernel/efi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index 4f39a18..83fc53c 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -239,6 +239,7 @@ static void __init free_boot_services(void) * want to keep for UEFI. */ + free_end = 0; keep_end = 0; free_start = 0; -- 1.9.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] efi: Fix free_end build warning 2014-11-12 20:27 [PATCH] efi: Fix free_end build warning Geoff Levand @ 2014-11-13 11:44 ` Will Deacon 2014-11-13 19:42 ` Geoff Levand 2014-11-14 10:22 ` Will Deacon 1 sibling, 1 reply; 6+ messages in thread From: Will Deacon @ 2014-11-13 11:44 UTC (permalink / raw) To: linux-arm-kernel Hi Geoff, On Wed, Nov 12, 2014 at 08:27:30PM +0000, Geoff Levand wrote: > Initialize the free_end variable to zero. Fixes build warnings > like these: > > arch/arm64/kernel/efi.c: warning: ?free_end? may be used uninitialized in this function > > Signed-off-by: Geoff Levand <geoff@infradead.org> > --- > Got this with the latest arm64/for-next/core branch. Please consider. > > -Geoff > > arch/arm64/kernel/efi.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c > index 4f39a18..83fc53c 100644 > --- a/arch/arm64/kernel/efi.c > +++ b/arch/arm64/kernel/efi.c > @@ -239,6 +239,7 @@ static void __init free_boot_services(void) > * want to keep for UEFI. > */ > > + free_end = 0; > keep_end = 0; > free_start = 0; Do you have any idea how GCC arrives at this conclusion? I can't see a path through that function where we use free_end without initialising it. Does something like the patch below help? Will --->8 diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index 95c49ebc660d..4c577b538d1c 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -271,17 +271,16 @@ static void __init free_boot_services(void) size = npages << PAGE_SHIFT; if (free_start) { - if (paddr <= free_end) - free_end = paddr + size; - else { + if (paddr > free_end) { total_freed += free_region(free_start, free_end); free_start = paddr; - free_end = paddr + size; } } else { free_start = paddr; - free_end = paddr + size; } + + free_end = paddr + size; + if (free_start < keep_end) { free_start += PAGE_SIZE; if (free_start >= free_end) ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] efi: Fix free_end build warning 2014-11-13 11:44 ` Will Deacon @ 2014-11-13 19:42 ` Geoff Levand 0 siblings, 0 replies; 6+ messages in thread From: Geoff Levand @ 2014-11-13 19:42 UTC (permalink / raw) To: linux-arm-kernel Hi Will, On Thu, 2014-11-13 at 11:44 +0000, Will Deacon wrote: > Do you have any idea how GCC arrives at this conclusion? I can't see a > path through that function where we use free_end without initialising it. I've seen it warn like this before, when it shouldn't. I guess -Wmaybe-uninitialized makes it more conservative. Using: aarch64-linux-gnu-gcc (Ubuntu/Linaro 4.8.2-13ubuntu1) 4.8.2 20140110 (prerelease) [ibm/gcc-4_8-branch merged from gcc-4_8-branch, revision 205847] > Does something like the patch below help? Here is the full output, for-next/core gives: /home/geoff/projects/linaro/git/linux-kexec/arch/arm64/kernel/efi.c:281:31: warning: ?free_end? may be used uninitialized in this function [-Wmaybe-uninitialized] total_freed += free_region(free_start, free_end); ^ /home/geoff/projects/linaro/git/linux-kexec/arch/arm64/kernel/efi.c:225:28: note: ?free_end? was declared here u64 keep_end, free_start, free_end; ^ Your mod gives: /home/geoff/projects/linaro/git/linux-kexec/arch/arm64/kernel/efi.c:279:31: warning: ?free_end? may be used uninitialized in this function [-Wmaybe-uninitialized] total_freed += free_region(free_start, free_end); ^ /home/geoff/projects/linaro/git/linux-kexec/arch/arm64/kernel/efi.c:225:28: note: ?free_end? was declared here u64 keep_end, free_start, free_end; ^ So about the same. -Geoff ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] efi: Fix free_end build warning 2014-11-12 20:27 [PATCH] efi: Fix free_end build warning Geoff Levand 2014-11-13 11:44 ` Will Deacon @ 2014-11-14 10:22 ` Will Deacon 2014-11-14 10:29 ` Ard Biesheuvel 1 sibling, 1 reply; 6+ messages in thread From: Will Deacon @ 2014-11-14 10:22 UTC (permalink / raw) To: linux-arm-kernel [Adding original authors] On Wed, Nov 12, 2014 at 08:27:30PM +0000, Geoff Levand wrote: > Initialize the free_end variable to zero. Fixes build warnings > like these: > > arch/arm64/kernel/efi.c: warning: ?free_end? may be used uninitialized in this function > > Signed-off-by: Geoff Levand <geoff@infradead.org> > --- > Got this with the latest arm64/for-next/core branch. Please consider. > > -Geoff > > arch/arm64/kernel/efi.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c > index 4f39a18..83fc53c 100644 > --- a/arch/arm64/kernel/efi.c > +++ b/arch/arm64/kernel/efi.c > @@ -239,6 +239,7 @@ static void __init free_boot_services(void) > * want to keep for UEFI. > */ > > + free_end = 0; > keep_end = 0; > free_start = 0; Whilst I can't see how free_end gets used uninitialized in this function, the code is really hard to read and I'd like to get an Ack from one of the people on CC before merging this, just in case GCC is actually telling us something useful for a change. Will ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] efi: Fix free_end build warning 2014-11-14 10:22 ` Will Deacon @ 2014-11-14 10:29 ` Ard Biesheuvel 2014-11-14 10:35 ` Will Deacon 0 siblings, 1 reply; 6+ messages in thread From: Ard Biesheuvel @ 2014-11-14 10:29 UTC (permalink / raw) To: linux-arm-kernel On 14 November 2014 11:22, Will Deacon <will.deacon@arm.com> wrote: > [Adding original authors] > > On Wed, Nov 12, 2014 at 08:27:30PM +0000, Geoff Levand wrote: >> Initialize the free_end variable to zero. Fixes build warnings >> like these: >> >> arch/arm64/kernel/efi.c: warning: ?free_end? may be used uninitialized in this function >> >> Signed-off-by: Geoff Levand <geoff@infradead.org> >> --- >> Got this with the latest arm64/for-next/core branch. Please consider. >> >> -Geoff >> >> arch/arm64/kernel/efi.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c >> index 4f39a18..83fc53c 100644 >> --- a/arch/arm64/kernel/efi.c >> +++ b/arch/arm64/kernel/efi.c >> @@ -239,6 +239,7 @@ static void __init free_boot_services(void) >> * want to keep for UEFI. >> */ >> >> + free_end = 0; >> keep_end = 0; >> free_start = 0; > > Whilst I can't see how free_end gets used uninitialized in this function, > the code is really hard to read and I'd like to get an Ack from one of the > people on CC before merging this, just in case GCC is actually telling us > something useful for a change. > We are planning to remove this code entirely in the 3.20 timeframe. Freeing boot services will not be necessary any longer once we stop reserving it in the first place, and I agree that the function is hard to read. Also, it depends on the UEFI memory map being sorted, which is not mandated by the spec so we can't actually rely on it. (Even if it usually is the case) So I don't object to this patch, if the warning is bothering people, but perhaps we can just wait for the warning to go away once the new stuff lands. -- Ard. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] efi: Fix free_end build warning 2014-11-14 10:29 ` Ard Biesheuvel @ 2014-11-14 10:35 ` Will Deacon 0 siblings, 0 replies; 6+ messages in thread From: Will Deacon @ 2014-11-14 10:35 UTC (permalink / raw) To: linux-arm-kernel On Fri, Nov 14, 2014 at 10:29:59AM +0000, Ard Biesheuvel wrote: > On 14 November 2014 11:22, Will Deacon <will.deacon@arm.com> wrote: > > [Adding original authors] > > > > On Wed, Nov 12, 2014 at 08:27:30PM +0000, Geoff Levand wrote: > >> Initialize the free_end variable to zero. Fixes build warnings > >> like these: > >> > >> arch/arm64/kernel/efi.c: warning: ?free_end? may be used uninitialized in this function > >> > >> Signed-off-by: Geoff Levand <geoff@infradead.org> > >> --- > >> Got this with the latest arm64/for-next/core branch. Please consider. > >> > >> -Geoff > >> > >> arch/arm64/kernel/efi.c | 1 + > >> 1 file changed, 1 insertion(+) > >> > >> diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c > >> index 4f39a18..83fc53c 100644 > >> --- a/arch/arm64/kernel/efi.c > >> +++ b/arch/arm64/kernel/efi.c > >> @@ -239,6 +239,7 @@ static void __init free_boot_services(void) > >> * want to keep for UEFI. > >> */ > >> > >> + free_end = 0; > >> keep_end = 0; > >> free_start = 0; > > > > Whilst I can't see how free_end gets used uninitialized in this function, > > the code is really hard to read and I'd like to get an Ack from one of the > > people on CC before merging this, just in case GCC is actually telling us > > something useful for a change. > > > > We are planning to remove this code entirely in the 3.20 timeframe. > Freeing boot services will not be necessary any longer once we stop > reserving it in the first place, and I agree that the function is hard > to read. Also, it depends on the UEFI memory map being sorted, which > is not mandated by the spec so we can't actually rely on it. (Even if > it usually is the case) > > So I don't object to this patch, if the warning is bothering people, > but perhaps we can just wait for the warning to go away once the new > stuff lands. Ok, thanks Ard. I think I'll leave it alone for now, then. Will ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-11-14 10:35 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-12 20:27 [PATCH] efi: Fix free_end build warning Geoff Levand 2014-11-13 11:44 ` Will Deacon 2014-11-13 19:42 ` Geoff Levand 2014-11-14 10:22 ` Will Deacon 2014-11-14 10:29 ` Ard Biesheuvel 2014-11-14 10:35 ` Will Deacon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).