Messages in this thread | | | Date | Thu, 21 Dec 2023 14:03:00 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] x86/kexec: fix incorrect end address passed to kernel_ident_mapping_init() |
| |
On Thu, 21 Dec 2023 18:17:02 +0800 Yuntao Wang <ytcoode@gmail.com> wrote:
> kernel_ident_mapping_init() takes an exclusive memory range [pstart, pend) > where pend is not included in the range, while res represents an inclusive > memory range [start, end] where end is considered part of the range. > > Therefore, passing res->end directly to kernel_ident_mapping_init() is > incorrect, the correct end address should be `res->end + 1`. > > ... > > --- a/arch/x86/kernel/machine_kexec_64.c > +++ b/arch/x86/kernel/machine_kexec_64.c > @@ -44,7 +44,7 @@ static int mem_region_callback(struct resource *res, void *arg) > struct init_pgtable_data *data = arg; > > return kernel_ident_mapping_init(data->info, data->level4p, > - res->start, res->end); > + res->start, res->end + 1); > }
Thanks. When fixing a bug, please always full describe the userspace-visible effects of that bug.
In this case I'm assuming "none", due to kernel_ident_mapping_init()'s upward rounding of the address?
| |