Author: rstone
Date: Wed Oct 23 17:20:20 2019
New Revision: 353938
URL: https://svnweb.freebsd.org/changeset/base/353938

Log:
  Add missing M_NOWAIT flag
  
  The LinuxKPI linux_dma code calls PCTRIE_INSERT with a
  mutex held, but does not set M_NOWAIT when allocating
  nodes, leading to a potential panic.  All of this code
  can handle an allocation failure here, so prefer an
  allocation failure to sleeping on memory.
  
  Also fix a related case where NOWAIT/WAITOK was not
  specified.  In this case it's not clear whether sleeping
  is allowed so be conservative and assume not.  There are
  a lot of other paths in this code that can fail due to
  a lack of memory anyway.
  
  Differential Revision: https://reviews.freebsd.org/D22127
  Reviewed by: imp
  Sponsored by: Dell EMC Isilon
  MFC After: 1 week

Modified:
  head/sys/compat/linuxkpi/common/src/linux_pci.c

Modified: head/sys/compat/linuxkpi/common/src/linux_pci.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_pci.c     Wed Oct 23 17:02:45 
2019        (r353937)
+++ head/sys/compat/linuxkpi/common/src/linux_pci.c     Wed Oct 23 17:20:20 
2019        (r353938)
@@ -500,7 +500,7 @@ static void *
 linux_dma_trie_alloc(struct pctrie *ptree)
 {
 
-       return (uma_zalloc(linux_dma_trie_zone, 0));
+       return (uma_zalloc(linux_dma_trie_zone, M_NOWAIT));
 }
 
 static void
@@ -569,7 +569,10 @@ linux_dma_map_phys(struct device *dev, vm_paddr_t phys
        if (bus_dma_id_mapped(priv->dmat, phys, len))
                return (phys);
 
-       obj = uma_zalloc(linux_dma_obj_zone, 0);
+       obj = uma_zalloc(linux_dma_obj_zone, M_NOWAIT);
+       if (obj == NULL) {
+               return (0);
+       }
 
        DMA_PRIV_LOCK(priv);
        if (bus_dmamap_create(priv->dmat, 0, &obj->dmamap) != 0) {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to