Re: [PATCH 04/14] x86: use more conventional access_ok() definition

From: Linus Torvalds
Date: Mon Feb 14 2022 - 15:44:42 EST


On Mon, Feb 14, 2022 at 11:46 AM Arnd Bergmann <arnd@xxxxxxxxxx> wrote:
>
> As Al pointed out, they turned out to be necessary on sparc64, but the only
> definitions are on sparc64 and x86, so it's possible that they serve a similar
> purpose here, in which case changing the limit from TASK_SIZE to
> TASK_SIZE_MAX is probably wrong as well.

x86-64 has always(*) used TASK_SIZE_MAX for access_ok(), and the
get_user() assembler implementation does the same.

I think any __range_not_ok() users that use TASK_SIZE are entirely
historical, and should be just fixed.

Linus

(*) And by "always" I mean "as far back as I bothered to go". In the
2.6.12 git import, we had

#define USER_DS MAKE_MM_SEG(PAGE_OFFSET)

so the user access limit was actually not really TASK_SIZE_MAX at all,
but the beginning of the kernel mapping, which on x86-64 is much much
higher.