On 06/05/14 at 11:22am, Vivek Goyal wrote: > On Thu, Jun 05, 2014 at 11:16:39AM -0400, Vivek Goyal wrote: > > On Thu, Jun 05, 2014 at 05:56:03PM +0800, WANG Chao wrote: > > > > [..] > > > > diff --git a/kernel/kexec.c b/kernel/kexec.c > > > > index c435c5f..a3044e6 100644 > > > > --- a/kernel/kexec.c > > > > +++ b/kernel/kexec.c > > > > @@ -1098,6 +1098,13 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry, > > > > } > > > > #endif > > > > > > > > +SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd, > > > > + const char __user *, cmdline_ptr, unsigned long, > > > > + cmdline_len, unsigned long, flags) > > > > > > initrd is optional for system boot. > > > > > > How about using int *kernel_fd and int *initrd_fd as the argument? Then > > > if I don't need initrd, in userspace I can do this: > > > > Hi Chao, > > > > I really am not too keen converting plain int fd arguments into pointers. > > > > Given the fact that fd is int, that means all valid values are greater > > than 0. How about using -1 to denote that initrd is not being loaded? > > > > This does create one little anomaly and that is for all -ve values we > > will return -EBADF except -1 which we special cased. > > Or we could do. > > - Define extra flag which should be set by user if valid initrd fd is not > being passed. Say, KEXEC_FILE_NO_INITRAMFS. And if kernel sees that flag > it will not try to parse value passed in argument initrd_fd at all. > > I think I like this better. Yep, it makes more sense to me as well. Please add this new flag. Thanks WANG Chao