Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4b8f579 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  [TCP]: Add return value indication to tcp_prune_ofo_queue().
  PS3: gelic: fix the oops on the broken IE returned from the hypervisor
  b43legacy: fix DMA mapping leakage
  mac80211: remove message on receiving unexpected unencrypted frames
  Update rt2x00 MAINTAINERS entry
  Add rfkill to MAINTAINERS file
  rfkill: Fix device type check when toggling states
  b43legacy: Fix usage of struct device used for DMAing
  ssb: Fix usage of struct device used for DMAing
  MAINTAINERS: move to generic repository for iwlwifi
  b43legacy: fix initvals loading on bcm4303
  rtl8187: Add missing priv->vif assignments
  netconsole: only set CON_PRINTBUFFER if the user specifies a netconsole
  [CAN]: Update documentation of struct sockaddr_can
  MAINTAINERS: isdn4linux@listserv.isdn4linux.de is subscribers-only
  [TCP]: Fix never pruned tcp out-of-order queue.
  [NET_SCHED] sch_api: fix qdisc_tree_decrease_qlen() loop
parents 424b00e2 56f367bb
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -281,10 +281,10 @@ solution for a couple of reasons:
            sa_family_t can_family;
            int         can_ifindex;
            union {
                    struct { canid_t rx_id, tx_id; } tp16;
                    struct { canid_t rx_id, tx_id; } tp20;
                    struct { canid_t rx_id, tx_id; } mcnet;
                    struct { canid_t rx_id, tx_id; } isotp;
                    /* transport protocol class address info (e.g. ISOTP) */
                    struct { canid_t rx_id, tx_id; } tp;

                    /* reserved for future CAN protocols address information */
            } can_addr;
    };

+11 −3
Original line number Diff line number Diff line
@@ -2116,7 +2116,7 @@ M: reinette.chatre@intel.com
L:	linux-wireless@vger.kernel.org
L:	ipw3945-devel@lists.sourceforge.net
W:	http://intellinuxwireless.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git
T:	git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
S:	Supported

IOC3 ETHERNET DRIVER
@@ -2197,7 +2197,7 @@ S: Maintained
ISDN SUBSYSTEM
P:	Karsten Keil
M:	kkeil@suse.de
L:	isdn4linux@listserv.isdn4linux.de
L:	isdn4linux@listserv.isdn4linux.de (subscribers-only)
W:	http://www.isdn4linux.de
T:	git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
S:	Maintained
@@ -2205,7 +2205,7 @@ S: Maintained
ISDN SUBSYSTEM (Eicon active card driver)
P:	Armin Schindler
M:	mac@melware.de
L:	isdn4linux@listserv.isdn4linux.de
L:	isdn4linux@listserv.isdn4linux.de (subscribers-only)
W:	http://www.melware.de
S:	Maintained

@@ -3280,6 +3280,7 @@ L: linux-wireless@vger.kernel.org
L:	rt2400-devel@lists.sourceforge.net
W:	http://rt2x00.serialmonkey.com/
S:	Maintained
T:	git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git
F:	drivers/net/wireless/rt2x00/

RAMDISK RAM BLOCK DEVICE DRIVER
@@ -3342,6 +3343,13 @@ L: reiserfs-devel@vger.kernel.org
W:	http://www.namesys.com
S:	Supported

RFKILL
P:	Ivo van Doorn
M:	IvDoorn@gmail.com
L:	netdev@vger.kernel.org
S:	Maintained
F:	net/rfkill

ROCKETPORT DRIVER
P:	Comtrol Corp.
W:	http://www.comtrol.com
+26 −26
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev,
						unsigned long offset,
						enum dma_data_direction dir)
{
	dma_sync_single_range_for_device(sdev->dev, dma_base,
	dma_sync_single_range_for_device(sdev->dma_dev, dma_base,
					 offset & dma_desc_align_mask,
					 dma_desc_sync_size, dir);
}
@@ -158,7 +158,7 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev,
					     unsigned long offset,
					     enum dma_data_direction dir)
{
	dma_sync_single_range_for_cpu(sdev->dev, dma_base,
	dma_sync_single_range_for_cpu(sdev->dma_dev, dma_base,
				      offset & dma_desc_align_mask,
				      dma_desc_sync_size, dir);
}
@@ -613,7 +613,7 @@ static void b44_tx(struct b44 *bp)

		BUG_ON(skb == NULL);

		dma_unmap_single(bp->sdev->dev,
		dma_unmap_single(bp->sdev->dma_dev,
				 rp->mapping,
				 skb->len,
				 DMA_TO_DEVICE);
@@ -653,7 +653,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
	if (skb == NULL)
		return -ENOMEM;

	mapping = dma_map_single(bp->sdev->dev, skb->data,
	mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
				 RX_PKT_BUF_SZ,
				 DMA_FROM_DEVICE);

@@ -663,19 +663,19 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
		mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
		/* Sigh... */
		if (!dma_mapping_error(mapping))
			dma_unmap_single(bp->sdev->dev, mapping,
			dma_unmap_single(bp->sdev->dma_dev, mapping,
					RX_PKT_BUF_SZ, DMA_FROM_DEVICE);
		dev_kfree_skb_any(skb);
		skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);
		if (skb == NULL)
			return -ENOMEM;
		mapping = dma_map_single(bp->sdev->dev, skb->data,
		mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
					 RX_PKT_BUF_SZ,
					 DMA_FROM_DEVICE);
		if (dma_mapping_error(mapping) ||
			mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
			if (!dma_mapping_error(mapping))
				dma_unmap_single(bp->sdev->dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
				dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
			dev_kfree_skb_any(skb);
			return -ENOMEM;
		}
@@ -750,7 +750,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
					     dest_idx * sizeof(dest_desc),
					     DMA_BIDIRECTIONAL);

	dma_sync_single_for_device(bp->sdev->dev, le32_to_cpu(src_desc->addr),
	dma_sync_single_for_device(bp->sdev->dma_dev, le32_to_cpu(src_desc->addr),
				   RX_PKT_BUF_SZ,
				   DMA_FROM_DEVICE);
}
@@ -772,7 +772,7 @@ static int b44_rx(struct b44 *bp, int budget)
		struct rx_header *rh;
		u16 len;

		dma_sync_single_for_cpu(bp->sdev->dev, map,
		dma_sync_single_for_cpu(bp->sdev->dma_dev, map,
					    RX_PKT_BUF_SZ,
					    DMA_FROM_DEVICE);
		rh = (struct rx_header *) skb->data;
@@ -806,7 +806,7 @@ static int b44_rx(struct b44 *bp, int budget)
			skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
			if (skb_size < 0)
				goto drop_it;
			dma_unmap_single(bp->sdev->dev, map,
			dma_unmap_single(bp->sdev->dma_dev, map,
					 skb_size, DMA_FROM_DEVICE);
			/* Leave out rx_header */
                	skb_put(skb, len + RX_PKT_OFFSET);
@@ -966,24 +966,24 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev)
		goto err_out;
	}

	mapping = dma_map_single(bp->sdev->dev, skb->data, len, DMA_TO_DEVICE);
	mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE);
	if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
		struct sk_buff *bounce_skb;

		/* Chip can't handle DMA to/from >1GB, use bounce buffer */
		if (!dma_mapping_error(mapping))
			dma_unmap_single(bp->sdev->dev, mapping, len,
			dma_unmap_single(bp->sdev->dma_dev, mapping, len,
					DMA_TO_DEVICE);

		bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA);
		if (!bounce_skb)
			goto err_out;

		mapping = dma_map_single(bp->sdev->dev, bounce_skb->data,
		mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data,
					 len, DMA_TO_DEVICE);
		if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
			if (!dma_mapping_error(mapping))
				dma_unmap_single(bp->sdev->dev, mapping,
				dma_unmap_single(bp->sdev->dma_dev, mapping,
					 len, DMA_TO_DEVICE);
			dev_kfree_skb_any(bounce_skb);
			goto err_out;
@@ -1082,7 +1082,7 @@ static void b44_free_rings(struct b44 *bp)

		if (rp->skb == NULL)
			continue;
		dma_unmap_single(bp->sdev->dev, rp->mapping, RX_PKT_BUF_SZ,
		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ,
					DMA_FROM_DEVICE);
		dev_kfree_skb_any(rp->skb);
		rp->skb = NULL;
@@ -1094,7 +1094,7 @@ static void b44_free_rings(struct b44 *bp)

		if (rp->skb == NULL)
			continue;
		dma_unmap_single(bp->sdev->dev, rp->mapping, rp->skb->len,
		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len,
					DMA_TO_DEVICE);
		dev_kfree_skb_any(rp->skb);
		rp->skb = NULL;
@@ -1117,12 +1117,12 @@ static void b44_init_rings(struct b44 *bp)
	memset(bp->tx_ring, 0, B44_TX_RING_BYTES);

	if (bp->flags & B44_FLAG_RX_RING_HACK)
		dma_sync_single_for_device(bp->sdev->dev, bp->rx_ring_dma,
		dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma,
			                  DMA_TABLE_BYTES,
			                  DMA_BIDIRECTIONAL);

	if (bp->flags & B44_FLAG_TX_RING_HACK)
		dma_sync_single_for_device(bp->sdev->dev, bp->tx_ring_dma,
		dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma,
			                  DMA_TABLE_BYTES,
			                  DMA_TO_DEVICE);

@@ -1144,24 +1144,24 @@ static void b44_free_consistent(struct b44 *bp)
	bp->tx_buffers = NULL;
	if (bp->rx_ring) {
		if (bp->flags & B44_FLAG_RX_RING_HACK) {
			dma_unmap_single(bp->sdev->dev, bp->rx_ring_dma,
			dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma,
					DMA_TABLE_BYTES,
					DMA_BIDIRECTIONAL);
			kfree(bp->rx_ring);
		} else
			dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES,
			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
					    bp->rx_ring, bp->rx_ring_dma);
		bp->rx_ring = NULL;
		bp->flags &= ~B44_FLAG_RX_RING_HACK;
	}
	if (bp->tx_ring) {
		if (bp->flags & B44_FLAG_TX_RING_HACK) {
			dma_unmap_single(bp->sdev->dev, bp->tx_ring_dma,
			dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma,
					DMA_TABLE_BYTES,
					DMA_TO_DEVICE);
			kfree(bp->tx_ring);
		} else
			dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES,
			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
					    bp->tx_ring, bp->tx_ring_dma);
		bp->tx_ring = NULL;
		bp->flags &= ~B44_FLAG_TX_RING_HACK;
@@ -1187,7 +1187,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		goto out_err;

	size = DMA_TABLE_BYTES;
	bp->rx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->rx_ring_dma, gfp);
	bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->rx_ring_dma, gfp);
	if (!bp->rx_ring) {
		/* Allocation may have failed due to pci_alloc_consistent
		   insisting on use of GFP_DMA, which is more restrictive
@@ -1199,7 +1199,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		if (!rx_ring)
			goto out_err;

		rx_ring_dma = dma_map_single(bp->sdev->dev, rx_ring,
		rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring,
			                    DMA_TABLE_BYTES,
			                    DMA_BIDIRECTIONAL);

@@ -1214,7 +1214,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		bp->flags |= B44_FLAG_RX_RING_HACK;
	}

	bp->tx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->tx_ring_dma, gfp);
	bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->tx_ring_dma, gfp);
	if (!bp->tx_ring) {
		/* Allocation may have failed due to dma_alloc_coherent
		   insisting on use of GFP_DMA, which is more restrictive
@@ -1226,7 +1226,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
		if (!tx_ring)
			goto out_err;

		tx_ring_dma = dma_map_single(bp->sdev->dev, tx_ring,
		tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring,
			                    DMA_TABLE_BYTES,
			                    DMA_TO_DEVICE);

+4 −1
Original line number Diff line number Diff line
@@ -730,7 +730,7 @@ static void write_msg(struct console *con, const char *msg, unsigned int len)

static struct console netconsole = {
	.name	= "netcon",
	.flags	= CON_ENABLED | CON_PRINTBUFFER,
	.flags	= CON_ENABLED,
	.write	= write_msg,
};

@@ -749,6 +749,9 @@ static int __init init_netconsole(void)
				err = PTR_ERR(nt);
				goto fail;
			}
			/* Dump existing printks when we register */
			netconsole.flags |= CON_PRINTBUFFER;

			spin_lock_irqsave(&target_list_lock, flags);
			list_add(&nt->list, &target_list);
			spin_unlock_irqrestore(&target_list_lock, flags);
+8 −3
Original line number Diff line number Diff line
@@ -512,13 +512,18 @@ static void gelic_wl_parse_ie(u8 *data, size_t len,
		 data, len);
	memset(ie_info, 0, sizeof(struct ie_info));

	while (0 < data_left) {
	while (2 <= data_left) {
		item_id = *pos++;
		item_len = *pos++;
		data_left -= 2;

		if (data_left < item_len)
			break;

		switch (item_id) {
		case MFIE_TYPE_GENERIC:
			if (!memcmp(pos, wpa_oui, OUI_LEN) &&
			if ((OUI_LEN + 1 <= item_len) &&
			    !memcmp(pos, wpa_oui, OUI_LEN) &&
			    pos[OUI_LEN] == 0x01) {
				ie_info->wpa.data = pos - 2;
				ie_info->wpa.len = item_len + 2;
@@ -535,7 +540,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len,
			break;
		}
		pos += item_len;
		data_left -= item_len + 2;
		data_left -= item_len;
	}
	pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__,
		 ie_info->wpa.data, ie_info->wpa.len,
Loading