Romain Tartière <romain_at_FreeBSD.org> wrote on Date: Sat, 02 Aug 2025 05:31:12 UTC :
> Romain Tartière <romain_at_FreeBSD.org> > Date: Sat, 02 Aug 2025 05:31:12 UTC > The branch stable/14 has been updated by romain: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=8d4464377219dcf45e87510b73767c9ec3515bc2 > > commit 8d4464377219dcf45e87510b73767c9ec3515bc2 > Author: Romain Tartière <rom...@freebsd.org> > AuthorDate: 2025-07-25 18:31:57 +0000 > Commit: Romain Tartière <rom...@freebsd.org> > CommitDate: 2025-08-02 05:30:18 +0000 > > vm_page: Fix loading bad memory addresses from file > > When loading bad memory addresses from a file, we are passed an end > pointer that points on the first byte after the buffer. We want the > buffer to be null-terminated (by changing the last byte to \0 if it is > reasonable to do so), so adjust the end pointer to be on that byte. > > Approved by: kib, markj > MFC after: 1 week > Differential Revision: https://reviews.freebsd.org/D51433 > > (cherry picked from commit 202f8bde836dc86627be2b5b98174d9a0fb2eaba) > --- > sys/vm/vm_page.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c > index ac922f4a3bc8..f013cbc84c25 100644 > --- a/sys/vm/vm_page.c > +++ b/sys/vm/vm_page.c > @@ -393,7 +393,7 @@ vm_page_blacklist_load(char **list, char **end) > } > *list = ptr; > if (ptr != NULL) > - *end = ptr + len; > + *end = ptr + len - 1; This looks wrong to me if/when len==0 is possible. It looks possible, see below. > else > *end = NULL; > return; > return; More context, original code(from main): . . . mod = preload_search_by_type("ram_blacklist"); if (mod != NULL) { ptr = preload_fetch_addr(mod); len = preload_fetch_size(mod); } *list = ptr; if (ptr != NULL) *end = ptr + len; else *end = NULL; return; . . . But in /usr/src/sys/kern/subr_module.c : size_t preload_fetch_size(caddr_t mod) { size_t *mdp; mdp = (size_t *)preload_search_info(mod, MODINFO_SIZE); if (mdp == NULL) return (0); return (*mdp); } Note the "return (0);" (possibly *mdp==0 as well when mdp!=0 ?). Then, for that return, showing the substitution: + *end = ptr + 0 - 1; Simplifying for the specific case: + *end = ptr - 1; That looks likely to be wrong to me. === Mark Millard marklmi at yahoo.com