svn commit: r327676 - head/sys/compat/linuxkpi/common/include/linux

Kristof Provost kp at FreeBSD.org
Sun Jan 7 18:30:08 UTC 2018


On 7 Jan 2018, at 19:02, Rodney W. Grimes wrote:
> [ Charset UTF-8 unsupported, converting... ]
>> Author: kp
>> Date: Sun Jan  7 13:39:12 2018
>> New Revision: 327676
>> URL: https://svnweb.freebsd.org/changeset/base/327676
>>
>> Log:
>>   linuxkpi: Implement kcalloc() based on mallocarray()
>>
>>   This means we now get integer overflow protection, which Linux code
>>   might expect as it is also provided by kcalloc() in Linux.
>>
>> Modified:
>>   head/sys/compat/linuxkpi/common/include/linux/slab.h
>>
>> Modified: head/sys/compat/linuxkpi/common/include/linux/slab.h
>> ==============================================================================
>> --- head/sys/compat/linuxkpi/common/include/linux/slab.h	Sun Jan  7 
>> 13:35:15 2018	(r327675)
>> +++ head/sys/compat/linuxkpi/common/include/linux/slab.h	Sun Jan  7 
>> 13:39:12 2018	(r327676)
>> @@ -46,7 +46,6 @@ MALLOC_DECLARE(M_KMALLOC);
>>  #define	kzalloc(size, flags)		kmalloc(size, (flags) | __GFP_ZERO)
>>  #define	kzalloc_node(size, flags, node)	kmalloc(size, (flags) | 
>> __GFP_ZERO)
>>  #define	kfree_const(ptr)		kfree(ptr)
>> -#define	kcalloc(n, size, flags)	        kmalloc((n) * (size), 
>> (flags) | __GFP_ZERO)
>
> Would not:
> #define	kcalloc(n, size, flags)	        mallocarray(mallocarray((n), 
> (size), M_KMALLOC, linux_check_m_flags((flags | __GFP_ZERO))
> work just fine, saving a call and stack use of about framesize + 32 
> bytes?
>
>
It would also work, but it’d have to be split up into multiple lines 
then.
I thought it’d be more readable as a function.
It’s an inline function, so it won’t actually use stack space in 
practice.
Also, it used to call kmalloc(), which is also an inline function, so at 
worst we’ve traded one function for another.

Regards,
Kristof


More information about the svn-src-all mailing list