Re: [PATCH] of: replace be32_to_cpu to be32_to_cpup

From: Christoph Hellwig
Date: Tue Apr 30 2019 - 09:32:41 EST


On Tue, Apr 30, 2019 at 04:00:44PM +0700, Phong Tran wrote:
>
> diff --git a/include/linux/of.h b/include/linux/of.h
> index e240992e5cb6..1c35fc8f19b0 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -235,7 +235,7 @@ static inline u64 of_read_number(const __be32 *cell, int size)
> {
> u64 r = 0;
> while (size--)
> - r = (r << 32) | be32_to_cpu(*(cell++));
> + r = (r << 32) | be32_to_cpup(cell++);
> return r;

This whole function looks odd. It could simply be replaced with
calls to get_unaligned_be64 / get_unaligned_be32. Given that we have a
lot of callers we can't easily do that, but at least we could try
something like

static inline u64 of_read_number(const __be32 *cell, int size)
{
WARN_ON_ONCE(size < 1);
WARN_ON_ONCE(size > 2);

if (size == 1)
return get_unaligned_be32(cell);
return get_unaligned_be64(cell);
}