• Dave Jiang's avatar
    mm: disallow mappings that conflict for devm_memremap_pages() · 15d36fec
    Dave Jiang authored
    When pmem namespaces created are smaller than section size, this can
    cause an issue during removal and gpf was observed:
    
      general protection fault: 0000 1 SMP PTI
      CPU: 36 PID: 3941 Comm: ndctl Tainted: G W 4.14.28-1.el7uek.x86_64 #2
      task: ffff88acda150000 task.stack: ffffc900233a4000
      RIP: 0010:__put_page+0x56/0x79
      Call Trace:
        devm_memremap_pages_release+0x155/0x23a
        release_nodes+0x21e/0x260
        devres_release_all+0x3c/0x48
        device_release_driver_internal+0x15c/0x207
        device_release_driver+0x12/0x14
        unbind_store+0xba/0xd8
        drv_attr_store+0x27/0x31
        sysfs_kf_write+0x3f/0x46
        kernfs_fop_write+0x10f/0x18b
        __vfs_write+0x3a/0x16d
        vfs_write+0xb2/0x1a1
        SyS_write+0x55/0xb9
        do_syscall_64+0x79/0x1ae
        entry_SYSCALL_64_after_hwframe+0x3d/0x0
    
    Add code to check whether we have a mapping already in the same section
    and prevent additional mappings from being created if that is the case.
    
    Link: http://lkml.kernel.org/r/152909478401.50143.312364396244072931.stgit@djiang5-desk3.ch.intel.comSigned-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Robert Elliott <elliott@hpe.com>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    15d36fec
memremap.c 10.2 KB