On Wed, 20 Nov 2013, Vivek Goyal wrote: > This patch implements the in kernel kexec functionality. It implements a > new system call kexec_file_load. I think parameter list of this system > call will change as I have not done the kernel image signature handling > yet. I have been told that I might have to pass the detached signature > and size as part of system call. > > Previously segment list was prepared in user space. Now user space just > passes kernel fd, initrd fd and command line and kernel will create a > segment list internally. > > This patch contains generic part of the code. Actual segment preparation > and loading is done by arch and image specific loader. Which comes in > next patch. > > Signed-off-by: Vivek Goyal <vgoyal at redhat.com> [ ... snip ... ] > diff --git a/kernel/kexec.c b/kernel/kexec.c > index 6238927..50bcaa8 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c [ ... snip ... ] > @@ -843,7 +1075,11 @@ static int kimage_load_normal_segment(struct kimage *image, > PAGE_SIZE - (maddr & ~PAGE_MASK)); > uchunk = min(ubytes, mchunk); > > - result = copy_from_user(ptr, buf, uchunk); > + /* For file based kexec, source pages are in kernel memory */ > + if (image->file_mode) > + memcpy(ptr, buf, uchunk); Very minor nit I came across when going through the patchset -- can't we use some different buffer for the file-based kexec that's not marked __user here? This really causes some eye-pain when looking at the code. Thanks a lot for pushing this patchset forward, -- Jiri Kosina SUSE Labs