On Tuesday 15 May 2007 18:28, Andrew Morton wrote: > Some of these are pointing at serious bustage. The kind which goes oops. The adm8211 and p54 warnings are from the recent sk_buff_data_t changes that make skb->tail an offset on 64 bit. Attached patches fix adm8211 and p54. John, please apply. Thanks, -Michael Wu
adm8211: use skb_tail_pointer instead of skb->tail From: Michael Wu <flamingice@xxxxxxxxxxxx> This makes adm8211 use skb_tail_pointer instead of skb->tail. Signed-off-by: Michael Wu <flamingice@xxxxxxxxxxxx> --- drivers/net/wireless/mac80211/adm8211/adm8211.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mac80211/adm8211/adm8211.c b/drivers/net/wireless/mac80211/adm8211/adm8211.c index f0b8a2d..0795ea7 100644 --- a/drivers/net/wireless/mac80211/adm8211/adm8211.c +++ b/drivers/net/wireless/mac80211/adm8211/adm8211.c @@ -499,7 +499,7 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) priv->rx_buffers[entry].mapping, pktlen, PCI_DMA_FROMDEVICE); memcpy(skb_put(skb, pktlen), - priv->rx_buffers[entry].skb->tail, + skb_tail_pointer(priv->rx_buffers[entry].skb), pktlen); pci_dma_sync_single_for_device( priv->pdev, @@ -518,7 +518,7 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) priv->rx_buffers[entry].skb = newskb; priv->rx_buffers[entry].mapping = pci_map_single(priv->pdev, - newskb->tail, + skb_tail_pointer(newskb), RX_PKT_SIZE, PCI_DMA_FROMDEVICE); } else { @@ -1537,7 +1537,8 @@ static int adm8211_init_rings(struct ieee80211_hw *dev) rx_info->skb = dev_alloc_skb(RX_PKT_SIZE); if (rx_info->skb == NULL) break; - rx_info->mapping = pci_map_single(priv->pdev, rx_info->skb->tail, + rx_info->mapping = pci_map_single(priv->pdev, + skb_tail_pointer(rx_info->skb), RX_PKT_SIZE, PCI_DMA_FROMDEVICE); desc->buffer1 = cpu_to_le32(rx_info->mapping);
p54: use skb_tail_pointer instead of skb->tail From: Michael Wu <flamingice@xxxxxxxxxxxx> This makes p54 use skb_tail_pointer instead of skb->tail. Signed-off-by: Michael Wu <flamingice@xxxxxxxxxxxx> --- drivers/net/wireless/mac80211/p54/prism54pci.c | 3 ++- drivers/net/wireless/mac80211/p54/prism54usb.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mac80211/p54/prism54pci.c b/drivers/net/wireless/mac80211/p54/prism54pci.c index 0db7026..5de5726 100644 --- a/drivers/net/wireless/mac80211/p54/prism54pci.c +++ b/drivers/net/wireless/mac80211/p54/prism54pci.c @@ -256,7 +256,8 @@ static void p54p_refill_rx_ring(struct ieee80211_hw *dev) if (!skb) break; - mapping = pci_map_single(priv->pdev, skb->tail, + mapping = pci_map_single(priv->pdev, + skb_tail_pointer(skb), MAX_RX_SIZE, PCI_DMA_FROMDEVICE); desc->host_addr = cpu_to_le32(mapping); diff --git a/drivers/net/wireless/mac80211/p54/prism54usb.c b/drivers/net/wireless/mac80211/p54/prism54usb.c index d52131c..e65da2d 100644 --- a/drivers/net/wireless/mac80211/p54/prism54usb.c +++ b/drivers/net/wireless/mac80211/p54/prism54usb.c @@ -100,7 +100,7 @@ static void p54u_rx_cb(struct urb *urb) info = (struct p54u_rx_info *) skb->cb; info->urb = urb; info->dev = dev; - urb->transfer_buffer = skb->tail; + urb->transfer_buffer = skb_tail_pointer(skb); urb->context = skb; skb_queue_tail(&priv->rx_queue, skb); } else { @@ -138,7 +138,7 @@ static int p54u_init_urbs(struct ieee80211_hw *dev) kfree_skb(skb); break; } - usb_fill_bulk_urb(entry, priv->udev, usb_rcvbulkpipe(priv->udev, P54U_PIPE_DATA), skb->tail, MAX_RX_SIZE, p54u_rx_cb, skb); + usb_fill_bulk_urb(entry, priv->udev, usb_rcvbulkpipe(priv->udev, P54U_PIPE_DATA), skb_tail_pointer(skb), MAX_RX_SIZE, p54u_rx_cb, skb); info = (struct p54u_rx_info *) skb->cb; info->urb = entry; info->dev = dev;
Attachment:
pgp4bfD1m2GWn.pgp
Description: PGP signature