• Jane Chu's avatar
    ipc/shm.c add ->pagesize function to shm_vm_ops · eec3636a
    Jane Chu authored
    Commit 05ea8860 ("mm, hugetlbfs: introduce ->pagesize() to
    vm_operations_struct") adds a new ->pagesize() function to
    hugetlb_vm_ops, intended to cover all hugetlbfs backed files.
    
    With System V shared memory model, if "huge page" is specified, the
    "shared memory" is backed by hugetlbfs files, but the mappings initiated
    via shmget/shmat have their original vm_ops overwritten with shm_vm_ops,
    so we need to add a ->pagesize function to shm_vm_ops.  Otherwise,
    vma_kernel_pagesize() returns PAGE_SIZE given a hugetlbfs backed vma,
    result in below BUG:
    
      fs/hugetlbfs/inode.c
            443             if (unlikely(page_mapped(page))) {
            444                     BUG_ON(truncate_op);
    
    resulting in
    
      hugetlbfs: oracle (4592): Using mlock ulimits for SHM_HUGETLB is deprecated
      ------------[ cut here ]------------
      kernel BUG at fs/hugetlbfs/inode.c:444!
      Modules linked in: nfsv3 rpcsec_gss_krb5 nfsv4 ...
      CPU: 35 PID: 5583 Comm: oracle_5583_sbt Not tainted 4.14.35-1829.el7uek.x86_64 #2
      RIP: 0010:remove_inode_hugepages+0x3db/0x3e2
      ....
      Call Trace:
        hugetlbfs_evict_inode+0x1e/0x3e
        evict+0xdb/0x1af
        iput+0x1a2/0x1f7
        dentry_unlink_inode+0xc6/0xf0
        __dentry_kill+0xd8/0x18d
        dput+0x1b5/0x1ed
        __fput+0x18b/0x216
        ____fput+0xe/0x10
        task_work_run+0x90/0xa7
        exit_to_usermode_loop+0xdd/0x116
        do_syscall_64+0x187/0x1ae
        entry_SYSCALL_64_after_hwframe+0x150/0x0
    
    [jane.chu@oracle.com: relocate comment]
      Link: http://lkml.kernel.org/r/20180731044831.26036-1-jane.chu@oracle.com
    Link: http://lkml.kernel.org/r/20180727211727.5020-1-jane.chu@oracle.com
    Fixes: 05ea8860 ("mm, hugetlbfs: introduce ->pagesize() to vm_operations_struct")
    Signed-off-by: 's avatarJane Chu <jane.chu@oracle.com>
    Suggested-by: 's avatarMike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: 's avatarMike Kravetz <mike.kravetz@oracle.com>
    Acked-by: 's avatarDavidlohr Bueso <dave@stgolabs.net>
    Acked-by: 's avatarMichal Hocko <mhocko@suse.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: 's avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: 's avatarLinus Torvalds <torvalds@linux-foundation.org>
    eec3636a
Name
Last commit
Last update
..
Makefile Loading commit data...
compat.c Loading commit data...
ipc_sysctl.c Loading commit data...
mq_sysctl.c Loading commit data...
mqueue.c Loading commit data...
msg.c Loading commit data...
msgutil.c Loading commit data...
namespace.c Loading commit data...
sem.c Loading commit data...
shm.c Loading commit data...
syscall.c Loading commit data...
util.c Loading commit data...
util.h Loading commit data...