[ARM] 3755/1: dmabounce: fix return value for find_safe_buffer
authorKevin Hilman <khilman@mvista.com>
Fri, 18 Aug 2006 14:32:14 +0000 (15:32 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 18 Aug 2006 14:32:14 +0000 (15:32 +0100)
Patch from Kevin Hilman

Previous locking changes to dmabounce incorrectly return non-NULL even
when buffer not found.  Fix it up.

Signed-off-by: Kevin Hilman <khilman@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/common/dmabounce.c

index 5b7c26395b4458d0c29b8ef4717ee385b594d371..028bdc9228fb00103bed548c148cb7fccc5268a8 100644 (file)
@@ -179,17 +179,19 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
 static inline struct safe_buffer *
 find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr)
 {
-       struct safe_buffer *b = NULL;
+       struct safe_buffer *b, *rb = NULL;
        unsigned long flags;
 
        read_lock_irqsave(&device_info->lock, flags);
 
        list_for_each_entry(b, &device_info->safe_buffers, node)
-               if (b->safe_dma_addr == safe_dma_addr)
+               if (b->safe_dma_addr == safe_dma_addr) {
+                       rb = b;
                        break;
+               }
 
        read_unlock_irqrestore(&device_info->lock, flags);
-       return b;
+       return rb;
 }
 
 static inline void