diff options
author | Jim Cromie <jim.cromie@gmail.com> | 2011-07-10 16:07:40 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-07-10 16:07:40 +0200 |
commit | ff1817749f0405c019420fcb415ad20fedec7884 (patch) | |
tree | f5cb8cfec46495e944209c16cb225aa40954fb7a /drivers | |
parent | sctp: ABORT if receive, reassmbly, or reodering queue is not empty while clos... (diff) | |
download | linux-ff1817749f0405c019420fcb415ad20fedec7884.tar.xz linux-ff1817749f0405c019420fcb415ad20fedec7884.zip |
natsemi: fix another dma-debug report
commit 2fb83cd618be34546fb526a9051eceaa95517026
Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: Sun Jul 3 22:34:29 2011 -0700
Above commit fixed previously reported warning, but I later
noticed another one at shutdown. This commit fixes it.
------------[ cut here ]------------
WARNING: at /home/jimc/projects/lx/linux-2.6/lib/dma-debug.c:820 check_unmap+0x1fe/0x56c()
natsemi 0000:00:06.0: DMA-API: device driver frees DMA memory with different size [device address=0x0000000007356840] [map size=1538 bytes] [unmap size=1522 bytes]
Modules linked in: bridge stp llc x_tables ipv6 pc87360 hwmon_vid scx200_hrt pc8736x_gpio scx200_gpio nsc_gpio scx200_acb i2c_core arc4 rtl8180 mac80211 eeprom_93cx6 cfg80211 pcspkr scx200 rfkill ide_gd_mod ide_pci_generic ohci_hcd usbcore sc1200 ide_core [last unloaded: ebtables]
Pid: 3996, comm: ifconfig Not tainted 3.0.0-rc6-skc-dyndbg+ #104
Call Trace:
[<c011ca97>] warn_slowpath_common+0x4a/0x5f
[<c0261ca5>] ? check_unmap+0x1fe/0x56c
[<c011cb10>] warn_slowpath_fmt+0x26/0x2a
[<c0261ca5>] check_unmap+0x1fe/0x56c
[<c0116505>] ? check_preempt_curr+0x5a/0x6a
[<c0262186>] debug_dma_unmap_page+0x53/0x5b
[<c02aaaf9>] pci_unmap_single+0x4d/0x57
[<c02aab51>] drain_rx+0x4e/0x74
[<c02acc6e>] netdev_close+0x103/0x1b8
[<c02f097e>] ? spin_unlock_bh.clone.30+0x12/0x14
[<c02f10aa>] ? dev_deactivate_many+0xc1/0xef
[<c02e05e9>] __dev_close_many+0x69/0x86
[<c02e0625>] __dev_close+0x1f/0x2c
[<c02e3200>] __dev_change_flags+0x92/0x107
[<c02e32db>] dev_change_flags+0x13/0x3f
[<c031e7ea>] devinet_ioctl+0x248/0x4b3
[<c02e3a9e>] ? dev_ioctl+0x50a/0x54c
[<c031f509>] inet_ioctl+0x8e/0xa7
[<c02d506f>] sock_ioctl+0x1b6/0x1da
[<c02d4eb9>] ? sock_fasync+0x61/0x61
[<c0183db4>] do_vfs_ioctl+0x44d/0x47f
[<c0113cdb>] ? do_page_fault+0x268/0x299
[<c01339d0>] ? __put_cred+0x34/0x36
[<c0177d83>] ? sys_faccessat+0x13e/0x14b
[<c0183e14>] sys_ioctl+0x2e/0x4a
[<c035bc95>] syscall_call+0x7/0xb
---[ end trace 7013a1bdac403e56 ]---
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/natsemi.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index 1f0a8333fd5c..60f46bc2bf64 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -2028,8 +2028,8 @@ static void drain_rx(struct net_device *dev) np->rx_ring[i].cmd_status = 0; np->rx_ring[i].addr = cpu_to_le32(0xBADF00D0); /* An invalid address. */ if (np->rx_skbuff[i]) { - pci_unmap_single(np->pci_dev, - np->rx_dma[i], buflen, + pci_unmap_single(np->pci_dev, np->rx_dma[i], + buflen + NATSEMI_PADDING, PCI_DMA_FROMDEVICE); dev_kfree_skb(np->rx_skbuff[i]); } |