On Wed, Jun 10, 2009 at 10:41:53PM +0200, Torsten Kaiser wrote: > I applied this patch to the just released 2.6.30, but it does not fix > the false warning on my System. > > Jun 10 21:10:14 treogen [ 2611.715341] ------------[ cut here ]------------ > Jun 10 21:10:14 treogen [ 2611.715359] WARNING: at lib/dma-debug.c:565 > check_unmap+0x536/0x620() > Jun 10 21:10:14 treogen [ 2611.715363] Hardware name: KFN5-D SLI > Jun 10 21:10:14 treogen [ 2611.715369] sata_sil24 0000:04:00.0: > DMA-API: device driver frees DMA sg list with different entry count [map count=2] [unmap count=1] Ok, thats because we need also to check for sg_call_ents in the best-fit checks. Can you please test if you can reproduce it with the attached patch? >From 1e83c7eab546314ad9dbe08602d243bb83e93b50 Mon Sep 17 00:00:00 2001 From: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu, 11 Jun 2009 10:03:42 +0200 Subject: [PATCH] dma-debug: check for sg_call_ents in best-fit algorithm too If we don't check for sg_call_ents the hash_bucket_find function might still return the wrong dma_debug_entry for sg mappings. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> --- lib/dma-debug.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/dma-debug.c b/lib/dma-debug.c index ad65fc0..eb86ec3 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -262,11 +262,12 @@ static struct dma_debug_entry *hash_bucket_find(struct hash_bucket *bucket, */ matches += 1; match_lvl = 0; - entry->size == ref->size ? ++match_lvl : match_lvl; - entry->type == ref->type ? ++match_lvl : match_lvl; - entry->direction == ref->direction ? ++match_lvl : match_lvl; + entry->size == ref->size ? ++match_lvl : 0; + entry->type == ref->type ? ++match_lvl : 0; + entry->direction == ref->direction ? ++match_lvl : 0; + entry->sg_call_ents == ref->sg_call_ents ? ++match_lvl : 0; - if (match_lvl == 3) { + if (match_lvl == 4) { /* perfect-fit - return the result */ return entry; } else if (match_lvl > last_lvl) { -- 1.6.3.1 -- | Advanced Micro Devices GmbH Operating | Karl-Hammerschmidt-Str. 34, 85609 Dornach bei München System | Research | Geschäftsführer: Thomas M. McCoy, Giuliano Meroni Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München | Registergericht München, HRB Nr. 43632 -- 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