diff options
| -rw-r--r-- | net/core/dev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index e19cdae49fef..c6b52068d5ec 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -1801,7 +1801,7 @@ EXPORT_SYMBOL(netdev_rx_csum_fault); | |||
| 1801 | * 2. No high memory really exists on this machine. | 1801 | * 2. No high memory really exists on this machine. |
| 1802 | */ | 1802 | */ |
| 1803 | 1803 | ||
| 1804 | static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb) | 1804 | static int illegal_highdma(struct net_device *dev, struct sk_buff *skb) |
| 1805 | { | 1805 | { |
| 1806 | #ifdef CONFIG_HIGHMEM | 1806 | #ifdef CONFIG_HIGHMEM |
| 1807 | int i; | 1807 | int i; |
| @@ -1814,6 +1814,8 @@ static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb) | |||
| 1814 | if (PCI_DMA_BUS_IS_PHYS) { | 1814 | if (PCI_DMA_BUS_IS_PHYS) { |
| 1815 | struct device *pdev = dev->dev.parent; | 1815 | struct device *pdev = dev->dev.parent; |
| 1816 | 1816 | ||
| 1817 | if (!pdev) | ||
| 1818 | return 0; | ||
| 1817 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 1819 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
| 1818 | dma_addr_t addr = page_to_phys(skb_shinfo(skb)->frags[i].page); | 1820 | dma_addr_t addr = page_to_phys(skb_shinfo(skb)->frags[i].page); |
| 1819 | if (!pdev->dma_mask || addr + PAGE_SIZE - 1 > *pdev->dma_mask) | 1821 | if (!pdev->dma_mask || addr + PAGE_SIZE - 1 > *pdev->dma_mask) |
