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 -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html