ahci 0000:00:1f.2: DMA-API: device driver maps memory from stack

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With v3 of the DMA API debug patchset:

------------[ cut here ]------------
WARNING: at lib/dma-debug.c:515 check_for_stack+0x78/0x9a() (Not tainted)
Hardware name: 74585FU
ahci 0000:00:1f.2: DMA-API: device driver maps memory from stack
[addr=ffff880137929c00]
Modules linked in:
Pid: 645, comm: scsi_eh_1 Not tainted 2.6.29-0.172.rc6.git4.fc11.x86_64 #1
Call Trace:
 [<ffffffff8104ba7b>] warn_slowpath+0xbc/0xf0
 [<ffffffff81060061>] ? sys_timer_gettime+0x80/0x9b
 [<ffffffff8101781b>] ? native_sched_clock+0x2d/0x5a
 [<ffffffff810170b5>] ? sched_clock+0x9/0xc
 [<ffffffff811a72a0>] ? dma_entry_alloc+0x7e/0x86
 [<ffffffff81395baf>] ? _spin_unlock_irqrestore+0x41/0x58
 [<ffffffff811a6677>] check_for_stack+0x78/0x9a
 [<ffffffff811a73f3>] debug_dma_map_sg+0xd8/0x104
 [<ffffffff81263b0a>] ata_qc_issue+0x1f3/0x289
 [<ffffffff812641ce>] ? ata_exec_internal_sg+0x8c/0x4dc
 [<ffffffff812643c0>] ata_exec_internal_sg+0x27e/0x4dc
 [<ffffffff81395bb6>] ? _spin_unlock_irqrestore+0x48/0x58
 [<ffffffff812646ab>] ata_exec_internal+0x8d/0x9c
 [<ffffffff81393b89>] ? wait_for_common+0xcc/0x110
 [<ffffffff8126adb6>] atapi_eh_request_sense+0x9f/0xa8
 [<ffffffff8126dad8>] ata_eh_recover+0x92d/0xbbe
 [<ffffffff8106f4e5>] ? mark_lock+0x28/0x37f
 [<ffffffff812750aa>] ? ahci_postreset+0x0/0x5f
 [<ffffffff8127467f>] ? ahci_hardreset+0x0/0xeb
 [<ffffffff812765fe>] ? ahci_softreset+0x0/0x42
 [<ffffffff81263052>] ? ata_std_prereset+0x0/0xb7
 [<ffffffff81271e7b>] sata_pmp_error_handler+0xd3/0xa0a
 [<ffffffff8101781b>] ? native_sched_clock+0x2d/0x5a
 [<ffffffff8101781b>] ? native_sched_clock+0x2d/0x5a
 [<ffffffff810170b5>] ? sched_clock+0x9/0xc
 [<ffffffff8106e001>] ? lock_release_holdtime+0x2c/0x11d
 [<ffffffff81395bb6>] ? _spin_unlock_irqrestore+0x48/0x58
 [<ffffffff812750a6>] ahci_error_handler+0x4a/0x4e
 [<ffffffff8126e7a8>] ata_scsi_error+0x2c0/0x619
 [<ffffffff8124d189>] scsi_error_handler+0xdd/0x4fe
 [<ffffffff81395bb6>] ? _spin_unlock_irqrestore+0x48/0x58
 [<ffffffff8106fa96>] ? trace_hardirqs_on_caller+0x12f/0x153
 [<ffffffff8106fac7>] ? trace_hardirqs_on+0xd/0xf
 [<ffffffff8124d0ac>] ? scsi_error_handler+0x0/0x4fe
 [<ffffffff81060881>] kthread+0x4d/0x78
 [<ffffffff810126aa>] child_rip+0xa/0x20
 [<ffffffff8100f88b>] ? __switch_to+0x190/0x398
 [<ffffffff81011fbe>] ? restore_args+0x0/0x30
 [<ffffffff81060834>] ? kthread+0x0/0x78
 [<ffffffff810126a0>] ? child_rip+0x0/0x20
---[ end trace 88a6b0f8de8d369d ]---

AFAICT it's complaining about ata_exec_internal(),
which puts 'sg' on the stack, assigns 'psg' the
address of 'sg' and passes that pointer to lower
level code:

unsigned ata_exec_internal(struct ata_device *dev,
                           struct ata_taskfile *tf, const u8 *cdb,
                           int dma_dir, void *buf, unsigned int buflen,
                           unsigned long timeout)
{
        struct scatterlist *psg = NULL, sg;
        unsigned int n_elem = 0;

        if (dma_dir != DMA_NONE) {
                WARN_ON(!buf);
                sg_init_one(&sg, buf, buflen);
                psg = &sg;
                n_elem++;
        }

        return ata_exec_internal_sg(dev, tf, cdb, dma_dir, psg, n_elem,
                                    timeout);
}
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux