On Fri, Nov 22, 2013 at 09:42:52PM +0100, Jiri Kosina wrote: [..] > > @@ -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. Hi Jiri, Sorry, responding to your comment after a very long time. Now I have made buf field a union as it can either be a user pointer or a kernel pointer depending on which kexec syscall has been used. Now caller needs to either use segment->buf or segment->kbuf based on the context of code. kexec_segment { union { void __user *buf; void *kbuf; }; } Thanks Vivek