[PATCH 4/4] ARM: zImage: allow supplementing appended DTB with traditional ATAG data

Warner Losh imp at bsdimp.com
Tue Jun 21 19:22:40 EDT 2011


On Jun 21, 2011, at 5:13 PM, David Brown wrote:

> On Tue, Jun 21 2011, David Brown wrote:
> 
>> On Mon, Jun 20 2011, Nicolas Pitre wrote:
>> 
>>> +void *memmove(void *__dest, __const void *__src, size_t __n)
>>> +{
>>> +	unsigned char *d = __dest;
>>> +	const unsigned char *s = __src;
>>> +
>>> +	if (__dest == __src)
>>> +		return __dest;
>>> +
>>> +	if (__dest < __src)
>>> +		return memcpy(__dest, __src, __n);
>>> +
>>> +	while (--__n >= 0)
>>> +		d[__n] = s[__n];
>>> +
>>> +	return __dest;
>>> +}
>> 
>> Ahh, found it.  size_t is unsigned, so the while loop never terminates.
>> Something like:
>> 
>> 	for (; __n; __n--)
>> 		d[__n] = s[__n];
> 
> Ugh.  How about if I don't replace a broken version with a different
> broken version.
> 
> 	while (__n) {
> 		__n--;
>                d[__n] = s[__n];
> 	}
> 
> Now, I don't need any extra fields in my DTB, and it correctly inserts
> the ATAG values.


while (__n--)
	d[__n] = s[__n];

does the same thing, and is more readable (and does the same thing as the original while())

Warner


More information about the linux-arm-kernel mailing list