>>> On 14.08.17 at 15:31, <jgr...@suse.com> wrote:
> On 14/08/17 14:46, Jan Beulich wrote:
>>>>> On 14.08.17 at 09:08, <jgr...@suse.com> wrote:
>>> @@ -97,8 +102,9 @@ static void __init _cmdline_parse(const char *cmdline)
>>>                       !strncmp(param->name, opt, q + 1 - opt) )
>>>                  {
>>>                      optval[-1] = '=';
>>> -                    ((void (*)(const char *))param->var)(q);
>>> +                    rc = ((int (*)(const char *))param->var)(q);
>> 
>> Neither here nor in the earlier "let custom parameter parsing
>> routines return errno" nor in the overview you mention why this
>> is safe - it is not a given that caller and callee disagreeing on
>> return type is going to work. Just think of functions returning
>> aggregates or (on ix86) ones returning floating point values in
>> st(0).
> 
> I thought about using a union in struct kernel_param and removing
> above type cast. This would require modifying the initialization of
> the kernel_param struct via the *_param() macros, though.
> 
> The other possibility would be using __builtin_types_compatible_p()
> to check the function to be of proper type.
> 
> What would you like best?

I'd prefer the union approach; I was actually surprised to see
we still only have a void * there.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to