On Fri, Jun 5, 2009 at 8:20 PM, Joerg Roedel <joro@xxxxxxxxxx> wrote: > On Fri, Jun 05, 2009 at 05:52:27PM +0200, Torsten Kaiser wrote: >> Should there be a warning if more then one possible match were found? > > True. That would be better. But I tried to keep the code change as small > as possible without disabling the feature completly. > >> * driver maps address 'a' with size 1 >> * driver maps same address 'a' with size 2 >> * driver wrongly unmaps the second allocation with size 1 >> -> no warning, because the first allocation is returned > > Hmm, I am not sure if we can handle this situation correctly in the > dma-debug code. There is no unique key to identify a mapping request > which allows to assign an unmap request to it. Currently dma-debug uses > device and dma-address. But that seems not to be sufficient. The > best-fit algorithm is also a but fuzzy of course. Maybe we just shouldn't try to handle it at all: static void add_dma_entry(struct dma_debug_entry *entry) { struct hash_bucket *bucket; unsigned long flags; bucket = get_hash_bucket(entry, &flags); if(hash_bucket_find(bucket, entry)) { printk(KERN_ERR "DMA-API: device mapped same address twice, " "this use case cannot be handled currently - disabling debugging\n"); global_disable = true; } hash_bucket_add(bucket, entry); put_hash_bucket(bucket, &flags); } This would allow this feature to remain for most cased, but would also prevent all false warnings. Torsten -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html