1. 02 9月, 2020 12 次提交
  2. 29 6月, 2020 26 次提交
  3. 24 6月, 2020 1 次提交
  4. 23 6月, 2020 1 次提交
    • D
      device-dax: don't leak kernel memory to user space after unloading kmem · e7f3612b
      David Hildenbrand 提交于
      task #28135435
      
      commit 60858c00e5f018eda711a3aa84cf62214ef62d61 upstream
      
      Assume we have kmem configured and loaded:
      
        [root@localhost ~]# cat /proc/iomem
        ...
        140000000-33fffffff : Persistent Memory$
          140000000-1481fffff : namespace0.0
          150000000-33fffffff : dax0.0
            150000000-33fffffff : System RAM
      
      Assume we try to unload kmem. This force-unloading will work, even if
      memory cannot get removed from the system.
      
        [root@localhost ~]# rmmod kmem
        [   86.380228] removing memory fails, because memory [0x0000000150000000-0x0000000157ffffff] is onlined
        ...
        [   86.431225] kmem dax0.0: DAX region [mem 0x150000000-0x33fffffff] cannot be hotremoved until the next reboot
      
      Now, we can reconfigure the namespace:
      
        [root@localhost ~]# ndctl create-namespace --force --reconfig=namespace0.0 --mode=devdax
        [  131.409351] nd_pmem namespace0.0: could not reserve region [mem 0x140000000-0x33fffffff]dax
        [  131.410147] nd_pmem: probe of namespace0.0 failed with error -16namespace0.0 --mode=devdax
        ...
      
      This fails as expected due to the busy memory resource, and the memory
      cannot be used.  However, the dax0.0 device is removed, and along its
      name.
      
      The name of the memory resource now points at freed memory (name of the
      device):
      
        [root@localhost ~]# cat /proc/iomem
        ...
        140000000-33fffffff : Persistent Memory
          140000000-1481fffff : namespace0.0
          150000000-33fffffff : �_�^7_��/_��wR��WQ���^��� ...
          150000000-33fffffff : System RAM
      
      We have to make sure to duplicate the string.  While at it, remove the
      superfluous setting of the name and fixup a stale comment.
      
      Fixes: 9f960da72b25 ("device-dax: "Hotremove" persistent memory that is used like normal RAM")
      Signed-off-by: NDavid Hildenbrand <david@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Vishal Verma <vishal.l.verma@intel.com>
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: <stable@vger.kernel.org>	[5.3]
      Link: http://lkml.kernel.org/r/20200508084217.9160-2-david@redhat.comSigned-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NYang Shi <yang.shi@linux.alibaba.com>
      Acked-by: NXunlei Pang <xlpang@linux.alibaba.com>
      e7f3612b