* Re: [PATCH] kconfig: fix extra output from savedefconfig on out-of-range defaults
[not found] ` <CAMuHMdWkPtJinDa10S_r7Pj2DTgcKpwgxt7U3tqm7fnSwGxm-Q@mail.gmail.com>
@ 2026-09-01 10:17 ` Geert Uytterhoeven
2026-09-01 13:48 ` Julian Braha
0 siblings, 1 reply; 2+ messages in thread
From: Geert Uytterhoeven @ 2026-09-01 10:17 UTC (permalink / raw)
To: Julian Braha
Cc: nathan, nsc, xiang, chao, zbestahu, jefflexu, dhavale, hongbohbli,
guochunhai, michael.bommarito, kees, vegard.nossum, sam,
u.kleine-koenig, mmarek, linux-kernel, linux-kbuild,
open list:SERIAL DRIVERS
On Mon, 31 Aug 2026 at 14:36, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Mon, 31 Aug 2026 at 00:12, Julian Braha <julianbraha@gmail.com> wrote:
> > The Kconfig interpreter currently allows defaults that are outside of the
> > range bounds.
> >
> > In these cases, the 'sym_validate_range' function will adjust the default
> > value to the nearest range bound. For example, see this example:
> >
> > config A
> > int
> > range 1 2
> > default 16
> >
> > Here, since the default value of 16 is greater than the bounds, the
> > effective default value gets adjusted down to the upper bound, 2.
> >
> > However, 'savedefconfig' writes non-default values, and without being
>
> s/non-default/non-adjusted/?
>
> > aware of the automatic adjustment to the range bound, it would write: A=2
> >
> > This limitation is also documented in a comment: "The following fails to
> > handle the situation where a default value is further limited by the valid
> > range."
> >
> > To resolve this, let's factor out the default-range adjustment logic from
> > the existing 'sym_validate_range' function into its own
> > 'sym_get_near_range_bound' function for 'savedefconfig' to use too, so
> > that it compares against the effective value.
> >
> > Adds tests, accordingly.
> >
> > Fixes: 7cf3d73b4360 ("kconfig: add savedefconfig")
> > Assisted-by: Codex:gpt-5.6-sol
> > Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > Closes: https://lore.kernel.org/lkml/CAMuHMdVyUAA3L4mUkSjmnuE3cvj-+N8z-Bhxsh1wa-FQWc=fjw@mail.gmail.com/
> > Signed-off-by: Julian Braha <julianbraha@gmail.com>
>
> Thanks, this fixes the issue, and would let us revert commit
> ab74edaeb1ae7c71 ("erofs: Fix EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS
> default logic") in v7.3-rc1.
>
> Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
FTR, this will impact all defconfigs that restrict SERIAL_8250_NR_UARTS
to a value lower than 4:
config SERIAL_8250_NR_UARTS
int "Maximum number of 8250/16550 serial ports"
depends on SERIAL_8250
default "4"
config SERIAL_8250_RUNTIME_UARTS
int "Number of 8250/16550 serial ports to register at runtime"
depends on SERIAL_8250
range 0 SERIAL_8250_NR_UARTS
default "4"
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] kconfig: fix extra output from savedefconfig on out-of-range defaults
2026-09-01 10:17 ` [PATCH] kconfig: fix extra output from savedefconfig on out-of-range defaults Geert Uytterhoeven
@ 2026-09-01 13:48 ` Julian Braha
0 siblings, 0 replies; 2+ messages in thread
From: Julian Braha @ 2026-09-01 13:48 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: nathan, nsc, xiang, chao, zbestahu, jefflexu, dhavale, hongbohbli,
guochunhai, michael.bommarito, kees, vegard.nossum, sam,
u.kleine-koenig, mmarek, linux-kernel, linux-kbuild,
open list:SERIAL DRIVERS, Arnd Bergmann,
Christophe Leroy (CS GROUP), mpe
CC: Arnd, Christophe
On 9/1/26 11:17, Geert Uytterhoeven wrote:
> FTR, this will impact all defconfigs that restrict SERIAL_8250_NR_UARTS
> to a value lower than 4:
>
> config SERIAL_8250_NR_UARTS
> int "Maximum number of 8250/16550 serial ports"
> depends on SERIAL_8250
> default "4"
>
> config SERIAL_8250_RUNTIME_UARTS
> int "Number of 8250/16550 serial ports to register at runtime"
> depends on SERIAL_8250
> range 0 SERIAL_8250_NR_UARTS
> default "4"
I suspected that there could be some cases where these out-of-range
defaults were actually accidents and causing bugs, so I added a check
with my SMT solver [1], which also detected these two (powerpc-only):
config DATA_SHIFT
int "Data shift" if DATA_SHIFT_BOOL
default 24 if STRICT_KERNEL_RWX && PPC64
range 17 28 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) &&
PPC_BOOK3S_32
range 14 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) &&
PPC_8xx
range 20 24 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) &&
PPC_85xx
default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
default 18 if (DEBUG_PAGEALLOC || KFENCE) && PPC_BOOK3S_32
default 23 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) &&
PPC_8xx && \
(PIN_TLB_DATA || PIN_TLB_TEXT)
default 19 if (STRICT_KERNEL_RWX || DEBUG_PAGEALLOC || KFENCE) &&
PPC_8xx
default 24 if STRICT_KERNEL_RWX && PPC_85xx
default PAGE_SHIFT
config MODULES_SIZE
int "Size of modules/execmem area (In Mbytes)" if MODULES_SIZE_BOOL
range 1 256 if EXECMEM
default 64 if EXECMEM && PPC_BOOK3S_32
default 32 if EXECMEM && PPC_8xx
default 0
The DATA_SHIFT case may be bug, where it should be 12, but incorrectly
adjusts to 20 when:
PPC_85xx=y
DEBUG_PAGEALLOC=y
STRICT_KERNEL_RWX=n
PAGE_SHIFT=12
The MODULES_SIZE case seems harmless since the only systems using that
option are PPC_BOOK3S_32 and PPC_8xx.
Anyway, this change to savedefconfig would also affect those 2.
[1] https://github.com/julianbraha/kconfirm/tree/smt
- Julian Braha
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-01 13:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260830221129.2668354-1-julianbraha@gmail.com>
[not found] ` <CAMuHMdWkPtJinDa10S_r7Pj2DTgcKpwgxt7U3tqm7fnSwGxm-Q@mail.gmail.com>
2026-09-01 10:17 ` [PATCH] kconfig: fix extra output from savedefconfig on out-of-range defaults Geert Uytterhoeven
2026-09-01 13:48 ` Julian Braha
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox