lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 13 Dec 2021 13:33:11 +0100
From:   Alexander Stein <alexander.stein@...tq-group.com>
To:     Christoph Hellwig <hch@....de>,
        Marek Szyprowski <m.szyprowski@...sung.com>,
        Robin Murphy <robin.murphy@....com>
Cc:     Alexander Stein <alexander.stein@...tq-group.com>,
        iommu@...ts.linux-foundation.org, linux-kernel@...r.kernel.org
Subject: [PATCH 1/1] dma-direct: Fix dma_direct_use_pool helper

During refactoring the logic around gfpflags_allow_blocking() got inverted
due to missing '!'. Fix this by adding it back.

Fixes: 8d7c141bb80f ("dma-direct: add a dma_direct_use_pool helper")
Signed-off-by: Alexander Stein <alexander.stein@...tq-group.com>
---
I bisected this to the commit in 'Fixed:' tag. Here is the splat:
------------[ cut here ]------------                                                                                                                                                                                                                                           
Failed to get suitable pool for 30be0000.ethernet                                                                                                                                                                                                                              
WARNING: CPU: 0 PID: 62 at kernel/dma/pool.c:279 dma_alloc_from_pool+0x88/0x1d0                                                                                                                                                                                                
Modules linked in:                                                                                                                                                                                                                                                             
CPU: 0 PID: 62 Comm: kworker/u8:2 Not tainted 5.16.0-rc4-tq+ #238                                                                                                                                                                                                              
Hardware name: TQ-Systems GmbH i.MX8MQ TQMa8MQ on MBa8Mx (DT)                                                                                                                                                                                                                  
Workqueue: events_unbound deferred_probe_work_func                                                                                                                                                                                                                             
pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)                                                                                                                                                                                                                
pc : dma_alloc_from_pool+0x88/0x1d0                                                                                                                                                                                                                                            
lr : dma_alloc_from_pool+0x88/0x1d0                                                                                                                                                                                                                                            
sp : ffff8000126b3860                                                                                                                                                                                                                                                          
x29: ffff8000126b3860 x28: ffff800012133d68 x27: 0000000000000000                                                                                                                                                                                                              
x26: ffff0000c03e0000 x25: ffff8000126b3930 x24: ffff0000c08ee010                                                                                                                                                                                                              
x23: ffff800012133d48 x22: ffff80001011f4b0 x21: ffff800011712820                                                                                                                                                                                                              
x20: 0000000000018000 x19: ffff0000c0ef8000 x18: 0000000000000014                                                                                                                                                                                                              
x17: 756420676e697375 x16: 202c646e756f6620 x15: 0000000000000000                                                                                                                                                                                                              
x14: 0000000000000000 x13: 20726f66206c6f6f x12: 7020656c62617469                                                                                                                                                                                                              
x11: 656820747563205b x10: 000000000000000a x9 : ffff8000126b3860                                                                                                                                                                                                              
x8 : 000000000000000a x7 : 0000000000000011 x6 : 000000000000000a
x5 : 0000000000000000 x4 : 0000000000000000 x3 : 00000000ffffffff
x2 : ffff800011eb6b30 x1 : 0000000000000000 x0 : 0000000000000000
Call trace:
 dma_alloc_from_pool+0x88/0x1d0
 dma_direct_alloc+0x8c/0x39c
 dma_alloc_attrs+0x7c/0xe4
 dmam_alloc_attrs+0x68/0xbc
 fec_enet_init+0xfc/0x504
 fec_probe+0x558/0x8b0
 platform_probe+0x64/0x100
 call_driver_probe+0x28/0x130
 really_probe+0xbc/0x390
 __driver_probe_device+0xfc/0x144
 driver_probe_device+0xcc/0x150
 __device_attach_driver+0xd4/0x180
 bus_for_each_drv+0x74/0xc4
 __device_attach+0xd8/0x1e0
 device_initial_probe+0x10/0x20
 bus_probe_device+0x90/0xa0
 deferred_probe_work_func+0x9c/0xf0
 process_one_work+0x1cc/0x360
 worker_thread+0x214/0x3b0
 kthread+0x150/0x160
 ret_from_fork+0x10/0x20
---[ end trace 3934c72dbe137fa9 ]---

 kernel/dma/direct.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index d0a317ed8f02..50f48e9e4598 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -162,7 +162,7 @@ static struct page *__dma_direct_alloc_pages(struct device *dev, size_t size,
  */
 static bool dma_direct_use_pool(struct device *dev, gfp_t gfp)
 {
-	return gfpflags_allow_blocking(gfp) && !is_swiotlb_for_alloc(dev);
+	return !gfpflags_allow_blocking(gfp) && !is_swiotlb_for_alloc(dev);
 }
 
 static void *dma_direct_alloc_from_pool(struct device *dev, size_t size,
-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ