• Vlastimil Babka's avatar
    usercopy: mark dma-kmalloc caches as usercopy caches · 49f2d241
    Vlastimil Babka authored
    We have seen a "usercopy: Kernel memory overwrite attempt detected to
    SLUB object 'dma-kmalloc-1 k' (offset 0, size 11)!" error on s390x, as
    IUCV uses kmalloc() with __GFP_DMA because of memory address
    restrictions.  The issue has been discussed [2] and it has been noted
    that if all the kmalloc caches are marked as usercopy, there's little
    reason not to mark dma-kmalloc caches too.  The 'dma' part merely means
    that __GFP_DMA is used to restrict memory address range.
    
    As Jann Horn put it [3]:
     "I think dma-kmalloc slabs should be handled the same way as normal
      kmalloc slabs. When a dma-kmalloc allocation is freshly created, it is
      just normal kernel memory - even if it might later be used for DMA -,
      and it should be perfectly fine to copy_from_user() into such
      allocations at that point, and to copy_to_user() out of them at the
      end. If you look at the places where such allocations are created, you
      can see things like kmemdup(), memcpy() and so on - all normal
      operations that shouldn't conceptually be different from usercopy in
      any relevant way."
    
    Thus this patch marks the dma-kmalloc-* caches as usercopy.
    
    [1] https://bugzilla.suse.com/show_bug.cgi?id=1156053
    [2] https://lore.kernel.org/kernel-hardening/bfca96db-bbd0-d958-7732-76e36c667c68@suse.cz/
    [3] https://lore.kernel.org/kernel-hardening/CAG48ez1a4waGk9kB0WLaSbs4muSoK0AYAVk8=XYaKj4_+6e6Hg@mail.gmail.com/Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: default avatarJiri Slaby <jslaby@suse.cz>
    Cc: Jann Horn <jannh@google.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: Julian Wiedmann <jwi@linux.ibm.com>
    Cc: Ursula Braun <ubraun@linux.ibm.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: David Windsor <dave@nullcore.net>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Christoffer Dall <christoffer.dall@linaro.org>
    Cc: Dave Kleikamp <dave.kleikamp@oracle.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Luis de Bethencourt <luisbg@kernel.org>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Matthew Garrett <mjg59@google.com>
    Cc: Michal Kubecek <mkubecek@suse.cz>
    Link: http://lkml.kernel.org/r/7d810f6d-8085-ea2f-7805-47ba3842dc50@suse.czSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    49f2d241
slab_common.c 44.1 KB