Re: [PATCH] userns: simplify map_id_range_* functions

From: Nicolas Iooss
Date: Mon Jul 27 2015 - 08:59:26 EST


On 07/27/2015 12:29 PM, Eric W. Biederman wrote:
> Nicolas Iooss <nicolas.iooss_linux@xxxxxxx> writes:
>
>> Functions map_id_range_down, map_id_down and map_id_up all used the
>> construction:
>>
>> if (...)
>> id = ...
>> else
>> id = ...
>> return id;
>>
>> which can be simplified by directly returning the result of the
>> computations in each branch.
>>
>> Moreover as the condition tested whether the "break;" in the previous
>> for loop was hit, it is simpler to directly compute the result and
>> return it.
>
> It is not a simplification, it is just code motion.

I agree. Also on my system (x86_64 kernel with Arch Linux +
CONFIG_USERNS configuration), the assembly code generated either by gcc
5.2.0 or by clang 3.6.2 (with LLVMLinux patches) does not change at all
with this patch. So there would be absolutely no performance change or
similar things which could motivate this change.

> Further at least to my eyes adding multiple exit points and setting the
> same value in two different places actually obscures what the functions
> are doing.

I did not understand what "setting the same value in two different
places" refers to. Anyway, all right. I haven't got much experience
about code maintenance so if you say my patch make things less clear, I
believe you.

> If we could talk about speeding up the performance of the stat system
> call I think there would be a point in mucking with these functions.
>
> As it is I think it is I think merging your patch will just make it more
> difficult to understand what the code is doing in the future, with no
> benefit except a reduction in line count.

OK. My intention was precisely to make the code easier to understand
(because I spent some time before I understood there really were only
two cases: existing mapping or not) but if you think my patch does the
opposite, I accept dropping it.

Thanks for your comments.

Nicolas

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/