Re: linux-next: Tree for Oct 31 (vboxguest)
From: Changbin Du
Date: Fri Nov 02 2018 - 19:59:43 EST
Hi Yamada,
>On Fri, Nov 02, 2018 at 05:25:00PM +0900, Masahiro Yamada wrote:
>[...]
> > > >
> > > > diff --git a/drivers/virt/vboxguest/vboxguest_core.c
> > > > b/drivers/virt/vboxguest/vboxguest_core.c
> > > > index 3093655c7b92..1475ed5ffcde 100644
> > > > --- a/drivers/virt/vboxguest/vboxguest_core.c
> > > > +++ b/drivers/virt/vboxguest/vboxguest_core.c
> > > > @@ -1312,7 +1312,7 @@ static int vbg_ioctl_hgcm_call(struct vbg_dev *gdev,
> > > > return -EINVAL;
> > > > }
> > > >
> > > > - if (f32bit)
> > > > + if (IS_ENABLED(CONFIG_COMPAT) && f32bit)
> > > > ret = vbg_hgcm_call32(gdev, client_id,
> > > > call->function, call->timeout_ms,
> > > > VBG_IOCTL_HGCM_CALL_PARMS32(call),
> > >
> > > Right, but adding the CONFIG_COMPAT guard to both the caller and the callee
> > > looks a bit redundant...
> > >
> > >
> > > I think most cases causing this kind of problem
> > > rely on the assumption that 'static' functions are inlined.
> > >
> > > We can force the compiler to do so
> > > by replacing 'static' with 'static __always_inline'
> > >
> > Declaring it as normal 'inline' is enough. The inline functions are
> > still inlined by gcc. Thanks.
>
>
> How about clang?
>
> For clang, -Og might be equivalent to -O1 at this moment, but I am not sure.
>
> In my understanding, Clang does not inline functions marked with 'static inline'
> for -Og (or -O1) optimization level.
>
> Theoretically, 'inline' keyword is a just hint for the compiler, after all.
>
I only verified it with GCC. But on my machine, clang does not work since it
lacks 'asm-goto' feature. Is clang linux completed?
changbin@acer:~/Desktop/work/linux$ make HOSTCC=clang CC=clang
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --syncconfig Kconfig
Compiler lacks asm-goto support.
arch/x86/Makefile:308: recipe for target 'checkbin' failed
make: *** [checkbin] Error 1
changbin@acer:~/Desktop/work/linux$ clang -v
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
>
> --
> Best Regards
> Masahiro Yamada
--
Thanks,
Changbin Du