hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
Subsystems (3)
The patch hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch alters can_do_hugetlb_shm() to check if a file is being created for shared memory or mmap(). If this returns false, we then unconditionally call user_shm_lock() triggering a warning. This block should never be entered
for MAP_HUGETLB. This patch partially reverts the problem and fixes the check.
This patch should be considered a fix to hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch.
From: Mel Gorman <[email protected]>
--- fs/hugetlbfs/inode.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)
fs/hugetlbfs/inode.c +3 -9
@@ -910,15 +910,9 @@ static struct file_system_type hugetlbfs_fs_type = {static struct vfsmount *hugetlbfs_vfsmount; -static int can_do_hugetlb_shm (int creat_flags) +static int can_do_hugetlb_shm (void ) { -if (creat_flags !=HUGETLB_SHMFS_INODE ) -return 0 ; -if (capable (CAP_IPC_LOCK )) -return 1 ; -if (in_group_p (sysctl_hugetlb_shm_group)) -return 1 ; -return 0 ; +return capable (CAP_IPC_LOCK ) ||in_group_p (sysctl_hugetlb_shm_group); } struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,
@@ -934,7 +928,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,if (!hugetlbfs_vfsmount)return ERR_PTR (-ENOENT ); -if (!can_do_hugetlb_shm (creat_flags)) { +if (creat_flags ==HUGETLB_SHMFS_INODE && !can_do_hugetlb_shm ()) { *user =current_user ();if (user_shm_lock (size, *user)) { WARN_ONCE(1,
PATCH 1/1 hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
Sorry for the resend but there was whitespace damage on the previous mail.
====
hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
The patch hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch alters can_do_hugetlb_shm() to check if a file is being created for shared memory or mmap(). If this returns false, we then unconditionally call user_shm_lock() triggering a warning. This block should never be entered
for MAP_HUGETLB. This patch partially reverts the problem and fixes the check.
This patch should be considered a fix to hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch.
From: Mel Gorman <[email protected]>
--- fs/hugetlbfs/inode.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)
fs/hugetlbfs/inode.c +3 -9
@@ -937,15 +937,9 @@ static struct file_system_type hugetlbfs_fs_type = {static struct vfsmount *hugetlbfs_vfsmount; -static int can_do_hugetlb_shm (int creat_flags) +static int can_do_hugetlb_shm () { -if (creat_flags !=HUGETLB_SHMFS_INODE ) -return 0 ; -if (capable (CAP_IPC_LOCK )) -return 1 ; -if (in_group_p (sysctl_hugetlb_shm_group)) -return 1 ; -return 0 ; +return capable (CAP_IPC_LOCK ) ||in_group_p (sysctl_hugetlb_shm_group); } struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,
@@ -961,7 +955,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,if (!hugetlbfs_vfsmount)return ERR_PTR (-ENOENT ); -if (!can_do_hugetlb_shm (creat_flags)) { +if (creat_flags ==HUGETLB_SHMFS_INODE && !can_do_hugetlb_shm ()) { *user =current_user ();if (user_shm_lock (size, *user)) { WARN_ONCE(1,
Signature · 7 lines
1.6.3.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 1/1 hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
In reply to Eric B Munsonhugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
The patch hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch alters can_do_hugetlb_shm() to check if a file is being created for shared memory or mmap(). If this returns false, we then unconditionally call user_shm_lock() triggering a warning. This block should never be entered
for MAP_HUGETLB. This patch partially reverts the problem and fixes the check.
This patch should be considered a fix to hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch.
From: Mel Gorman <[email protected]>
--- fs/hugetlbfs/inode.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)
fs/hugetlbfs/inode.c +3 -9
@@ -937,15 +937,9 @@ static struct file_system_type hugetlbfs_fs_type = {static struct vfsmount *hugetlbfs_vfsmount; -static int can_do_hugetlb_shm (int creat_flags) +static int can_do_hugetlb_shm () { -if (creat_flags !=HUGETLB_SHMFS_INODE ) -return 0 ; -if (capable (CAP_IPC_LOCK )) -return 1 ; -if (in_group_p (sysctl_hugetlb_shm_group)) -return 1 ; -return 0 ; +return capable (CAP_IPC_LOCK ) ||in_group_p (sysctl_hugetlb_shm_group); } struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,
@@ -961,7 +955,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,if (!hugetlbfs_vfsmount)return ERR_PTR (-ENOENT ); -if (!can_do_hugetlb_shm (creat_flags)) { +if (creat_flags ==HUGETLB_SHMFS_INODE && !can_do_hugetlb_shm ()) { *user =current_user ();if (user_shm_lock (size, *user)) { WARN_ONCE(1,
Signature · 7 lines
1.6.3.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 1/1 hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix V2
hugetlbfs: Do not call user_shm_lock() for MAP_HUGETLB fix
The patch hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch alters can_do_hugetlb_shm() to check if a file is being created for shared memory or mmap(). If this returns false, we then unconditionally call user_shm_lock() triggering a warning. This block should never be entered
for MAP_HUGETLB. This patch partially reverts the problem and fixes the check.
This patch should be considered a fix to hugetlbfs-allow-the-creation-of-files-suitable-for-map_private-on-the-vfs-internal-mount.patch.
From: Mel Gorman <[email protected]>
--- fs/hugetlbfs/inode.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-)
fs/hugetlbfs/inode.c +3 -9
@@ -937,15 +937,9 @@ static struct file_system_type hugetlbfs_fs_type = {static struct vfsmount *hugetlbfs_vfsmount; -static int can_do_hugetlb_shm (int creat_flags) +static int can_do_hugetlb_shm (void ) { -if (creat_flags !=HUGETLB_SHMFS_INODE ) -return 0 ; -if (capable (CAP_IPC_LOCK )) -return 1 ; -if (in_group_p (sysctl_hugetlb_shm_group)) -return 1 ; -return 0 ; +return capable (CAP_IPC_LOCK ) ||in_group_p (sysctl_hugetlb_shm_group); } struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,
@@ -961,7 +955,7 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,if (!hugetlbfs_vfsmount)return ERR_PTR (-ENOENT ); -if (!can_do_hugetlb_shm (creat_flags)) { +if (creat_flags ==HUGETLB_SHMFS_INODE && !can_do_hugetlb_shm ()) { *user =current_user ();if (user_shm_lock (size, *user)) { WARN_ONCE(1,
Signature · 7 lines
1.6.3.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>