Re: [PATCH 2/3] Create compat_sys_migrate_pages
From: Stephen Rothwell <hidden>
Date: 2006-10-27 00:28:53
Also in:
linux-mm, lkml
Attachments
- (unnamed) [application/pgp-signature] 189 bytes
From: Stephen Rothwell <hidden>
Date: 2006-10-27 00:28:53
Also in:
linux-mm, lkml
On Thu, 26 Oct 2006 12:00:30 -0700 (PDT) Christoph Lameter [off-list ref] wrote:
On Thu, 26 Oct 2006, Stephen Rothwell wrote:quoted
This is needed on bigendian 64bit architectures. The obvious way to do this (taking the other compat_ routines in this file as examples) is to use compat_alloc_user_space and copy the bitmasks back there, however you cannot call compat_alloc_user_space twice for a single system call and this method saves two copies of the bitmasks.Well this means also that sys_mbind and sys_set_mempolicy are also broken because these functions also use get_nodes().
No they aren't because they have compat routines that convert the bitmaps before calling the "normal" syscall. They, importantly, only use compat_alloc_user_space once each.
Fixing get_nodes() to do the proper thing would fix all of these without having to touch sys_migrate_pages or creating a compat_ function (which usually is placed in kernel/compat.c)
You need the compat_ version of the syscalls to know if you were called from a 32bit application in order to know if you may need to fixup the bitmaps that are passed from/to user mode. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/