Re: [PATCH] s390/mm: return -ENOMEM in arch_get_unmapped_area[_topdown]

From: Li Wang
Date: Thu Oct 26 2017 - 05:47:48 EST


On Thu, Oct 26, 2017 at 5:26 PM, Martin Schwidefsky
<schwidefsky@xxxxxxxxxx> wrote:
> On Thu, 26 Oct 2017 15:36:10 +0800
> Li Wang <liwang@xxxxxxxxxx> wrote:
>
>> That would be very hard to get -ENOMEM returned in crst_table_upgrade()
>> because the condition(addr + len <= TASK_SIZE) makes all 'end' value
>> is smaller/equal than 'TASK_SIZE_TASK'. So let's move it to the upper
>> layer.
>
> I have a hard time understanding what scenario you describe. There is no
> 'TASK_SIZE_TASK', only TASK_SIZE, TASK_SIZE_OF and TASK_SIZE_MAX.

Sorry for the typo, I was thinking about to write TASK_SIZE_MAX.

>
> The code in mmap.c checks for the per-task limit, 31-bit vs 64-bit.
> pgalloc.c checks for the maximum allowed address and does not care
> about the task.
>
>> Fixes: 8ab867cb0806 (s390/mm: fix BUG_ON in crst_table_upgrade)
>> Signed-off-by: Li Wang <liwang@xxxxxxxxxx>
>
> I don't think this patch fixes anything.

At least there is a logic error i think, after apply the patch
"s390/mm: fix BUG_ON in crst_table_upgrade",
it makes no sense to compare "if (end >= TASK_SIZE_MAX) return
-ENOMEM" in crst_table_upgrade() function.

isn't it?


Thanks for reviewing quick.


--
Li Wang
liwang@xxxxxxxxxx