Date: Wed, 23 Oct 2019 17:20:21 +0000 (UTC) From: Ryan Stone <rstone@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r353938 - head/sys/compat/linuxkpi/common/src Message-ID: <201910231720.x9NHKLFd051559@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201910231720.x9NHKLFd051559>