lkml.org 
[lkml]   [2023]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] mm/migrate: fix do_pages_move for compat pointers
On Tue, Oct 3, 2023, at 19:17, Andrew Morton wrote:
> On Tue, 03 Oct 2023 19:01:45 +0200 "Arnd Bergmann" <arnd@arndb.de> wrote:
>> On Tue, Oct 3, 2023, at 18:57, Arnd Bergmann wrote:
>> > On Tue, Oct 3, 2023, at 18:49, Andrew Morton wrote:
>> >> On Tue, 3 Oct 2023 10:48:56 -0400 Gregory Price
>> >> <gourry.memverge@gmail.com> wrote:
>> >>
>> >>> do_pages_move does not handle compat pointers for the page list.
>> >>> correctly. Add in_compat_syscall check and appropriate get_user
>> >>> fetch when iterating the page list.
>> >>
>> >> What are the userspace visible effects of this change?
>> >
>> > It makes the syscall in compat mode (32-bit userspace, 64-bit kernel)
>> > work the same way as the native 32-bit syscall again, restoring the
>> > behavior before my broken commit 5b1b561ba73c ("mm: simplify
>> > compat_sys_move_pages").
>>
>> More specifically, my patch moved the parsing of the 'pages'
>> array from the main entry point into do_pages_stat(), which left
>> the syscall working correctly for the 'stat' operation (nodes = NULL),
>> while the 'move' operation (nodes != NULL) is now missing
>> the conversion and interprets 'pages' as an array of 64-bit
>> pointers instead of the intended 32-bit userspace pointers.
>>
>
> Thanks. So is a cc:stable warranted?

Yes, absolutely. It is possible that nobody noticed this
bug because the few applications that actually call move_pages are
unlikely to run in compat mode because of their large memory
requirements, but this clearly fixes a user-visible regression
and should have been caught by ltp.

Arnd

\
 
 \ /
  Last update: 2023-10-03 19:38    [W:0.344 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site