Re: [PATCH v3 2/2] kexec: Use min_t to simplify logic

Zhang Yanfei
2013-02-26T08:50:55Z

于 2013年02月26日 16:38, Joe Perches 写道:
> On Tue, 2013-02-26 at 13:30 +0800, Zhang Yanfei wrote:
>> This is just a tweak: using min_t to simplify logic of variable
>> assignments.
>>
>> v3:
>> - cast type of (PAGE_SIZE - (maddr & ~PAGE_MASK)) into size_t.
>
> Why? Isn't this just a redundant cast?
>
>> diff --git a/kernel/kexec.c b/kernel/kexec.c
> []
>> @@ -822,13 +822,9 @@ static int kimage_load_normal_segment(struct kimage *image,
> []
>> + mchunk = min_t(size_t, mbytes,
>> + (size_t)(PAGE_SIZE - (maddr & ~PAGE_MASK)));
>
> #define min_t(type, x, y) ({ \
> type __min1 = (x); \
> type __min2 = (y); \
> __min1 < __min2 ? __min1: __min2; })
>
>
>

Hmm, from the definition, the cast is redundant.

Maybe I misunderstood what Andrew meant in the mail related to v2:

"The types of PAGE_SIZE and PAGE_MASK are vague - iirc they once had
different types on different architectures, so some form of casting is
unavoidable here."

Andrew, could you please explain the casting you meant above?

Thanks
Zhang