[kernel] r8476 - in dists/sid/linux-2.6/debian/patches: bugfix/all/stable series

Bastian Blank waldi at alioth.debian.org
Sat Apr 14 17:03:20 UTC 2007


Author: waldi
Date: Sat Apr 14 17:03:20 2007
New Revision: 8476

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-1.patch   (contents, props changed)
   dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-2.patch   (contents, props changed)
Modified:
   dists/sid/linux-2.6/debian/patches/series/2
Log:
Exclude abi changing patches from 2.6.20.7.

* debian/patches/bugfix/all/stable/2.6.20.7-abi-1.patch,
  debian/patches/bugfix/all/stable/2.6.20.7-abi-2.patch: Add.
* debian/patches/series/2: Update.


Added: dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-1.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-1.patch	Sat Apr 14 17:03:20 2007
@@ -0,0 +1,157 @@
+diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
+index 07b4c0d..ca2b21f 100644
+--- a/drivers/net/ifb.c
++++ b/drivers/net/ifb.c
+@@ -96,24 +96,17 @@ static void ri_tasklet(unsigned long dev)
+ 		skb->tc_verd = SET_TC_NCLS(skb->tc_verd);
+ 		stats->tx_packets++;
+ 		stats->tx_bytes +=skb->len;
+-
+-		skb->dev = __dev_get_by_index(skb->iif);
+-		if (!skb->dev) {
+-			dev_kfree_skb(skb);
+-			stats->tx_dropped++;
+-			break;
+-		}
+-		skb->iif = _dev->ifindex;
+-
+ 		if (from & AT_EGRESS) {
+ 			dp->st_rx_frm_egr++;
+ 			dev_queue_xmit(skb);
+ 		} else if (from & AT_INGRESS) {
++
+ 			dp->st_rx_frm_ing++;
+-			skb_pull(skb, skb->dev->hard_header_len);
+ 			netif_rx(skb);
+-		} else
+-			BUG();
++		} else {
++			dev_kfree_skb(skb);
++			stats->tx_dropped++;
++		}
+ 	}
+ 
+ 	if (netif_tx_trylock(_dev)) {
+@@ -164,10 +157,26 @@ static int ifb_xmit(struct sk_buff *skb, struct net_device *dev)
+ 	stats->rx_packets++;
+ 	stats->rx_bytes+=skb->len;
+ 
+-	if (!(from & (AT_INGRESS|AT_EGRESS)) || !skb->iif) {
++	if (!from || !skb->input_dev) {
++dropped:
+ 		dev_kfree_skb(skb);
+ 		stats->rx_dropped++;
+ 		return ret;
++	} else {
++		/*
++		 * note we could be going
++		 * ingress -> egress or
++		 * egress -> ingress
++		*/
++		skb->dev = skb->input_dev;
++		skb->input_dev = dev;
++		if (from & AT_INGRESS) {
++			skb_pull(skb, skb->dev->hard_header_len);
++		} else {
++			if (!(from & AT_EGRESS)) {
++				goto dropped;
++			}
++		}
+ 	}
+ 
+ 	if (skb_queue_len(&dp->rq) >= dev->tx_queue_len) {
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 82f43ad..4ff3940 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -188,7 +188,7 @@ enum {
+  *	@sk: Socket we are owned by
+  *	@tstamp: Time we arrived
+  *	@dev: Device we arrived on/are leaving by
+- *	@iif: ifindex of device we arrived on
++ *	@input_dev: Device we arrived on
+  *	@h: Transport layer header
+  *	@nh: Network layer header
+  *	@mac: Link layer header
+@@ -235,8 +235,7 @@ struct sk_buff {
+ 	struct sock		*sk;
+ 	struct skb_timeval	tstamp;
+ 	struct net_device	*dev;
+-	int			iif;
+-	/* 4 byte hole on 64 bit*/
++	struct net_device	*input_dev;
+ 
+ 	union {
+ 		struct tcphdr	*th;
+diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h
+index 02647fe..b902d24 100644
+--- a/include/net/pkt_cls.h
++++ b/include/net/pkt_cls.h
+@@ -352,13 +352,10 @@ tcf_change_indev(struct tcf_proto *tp, char *indev, struct rtattr *indev_tlv)
+ static inline int
+ tcf_match_indev(struct sk_buff *skb, char *indev)
+ {
+-	struct net_device *dev;
+-
+ 	if (indev[0]) {
+-		if  (!skb->iif)
++		if  (!skb->input_dev)
+ 			return 0;
+-		dev = __dev_get_by_index(skb->iif);
+-		if (!dev || strcmp(indev, dev->name))
++		if (strcmp(indev, skb->input_dev->name))
+ 			return 0;
+ 	}
+ 
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 2a587b8..295f8f9 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -1741,8 +1741,8 @@ static int ing_filter(struct sk_buff *skb)
+ 	if (dev->qdisc_ingress) {
+ 		__u32 ttl = (__u32) G_TC_RTTL(skb->tc_verd);
+ 		if (MAX_RED_LOOP < ttl++) {
+-			printk(KERN_WARNING "Redir loop detected Dropping packet (%d->%d)\n",
+-				skb->iif, skb->dev->ifindex);
++			printk(KERN_WARNING "Redir loop detected Dropping packet (%s->%s)\n",
++				skb->input_dev->name, skb->dev->name);
+ 			return TC_ACT_SHOT;
+ 		}
+ 
+@@ -1775,8 +1775,8 @@ int netif_receive_skb(struct sk_buff *skb)
+ 	if (!skb->tstamp.off_sec)
+ 		net_timestamp(skb);
+ 
+-	if (!skb->iif)
+-		skb->iif = skb->dev->ifindex;
++	if (!skb->input_dev)
++		skb->input_dev = skb->dev;
+ 
+ 	orig_dev = skb_bond(skb);
+ 
+diff --git a/net/core/skbuff.c b/net/core/skbuff.c
+index ba94969..5299083 100644
+--- a/net/core/skbuff.c
++++ b/net/core/skbuff.c
+@@ -497,7 +497,7 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
+ 	n->tc_verd = SET_TC_VERD(skb->tc_verd,0);
+ 	n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd);
+ 	n->tc_verd = CLR_TC_MUNGED(n->tc_verd);
+-	C(iif);
++	C(input_dev);
+ #endif
+ 	skb_copy_secmark(n, skb);
+ #endif
+diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c
+index 7263a2e..4838972 100644
+--- a/net/sched/act_mirred.c
++++ b/net/sched/act_mirred.c
+@@ -199,7 +199,7 @@ bad_mirred:
+ 		skb2->tc_verd = SET_TC_FROM(skb2->tc_verd, at);
+ 
+ 	skb2->dev = dev;
+-	skb2->iif = skb->dev->ifindex;
++	skb2->input_dev = skb->dev;
+ 	dev_queue_xmit(skb2);
+ 	spin_unlock(&m->tcf_lock);
+ 	return m->tcf_action;

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-2.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/stable/2.6.20.7-abi-2.patch	Sat Apr 14 17:03:20 2007
@@ -0,0 +1,80 @@
+diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
+index d6ff4f2..99d1c43 100644
+--- a/drivers/ide/ide-io.c
++++ b/drivers/ide/ide-io.c
+@@ -519,24 +519,21 @@ static ide_startstop_t ide_ata_error(ide_drive_t *drive, struct request *rq, u8
+ 	if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ && hwif->err_stops_fifo == 0)
+ 		try_to_flush_leftover_data(drive);
+ 
+-	if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
+-		ide_kill_rq(drive, rq);
+-		return ide_stopped;
+-	}
+-
+ 	if (hwif->INB(IDE_STATUS_REG) & (BUSY_STAT|DRQ_STAT))
+-		rq->errors |= ERROR_RESET;
++		/* force an abort */
++		hwif->OUTB(WIN_IDLEIMMEDIATE, IDE_COMMAND_REG);
+ 
+-	if ((rq->errors & ERROR_RESET) == ERROR_RESET) {
++	if (rq->errors >= ERROR_MAX || blk_noretry_request(rq))
++		ide_kill_rq(drive, rq);
++	else {
++		if ((rq->errors & ERROR_RESET) == ERROR_RESET) {
++			++rq->errors;
++			return ide_do_reset(drive);
++		}
++		if ((rq->errors & ERROR_RECAL) == ERROR_RECAL)
++			drive->special.b.recalibrate = 1;
+ 		++rq->errors;
+-		return ide_do_reset(drive);
+ 	}
+-
+-	if ((rq->errors & ERROR_RECAL) == ERROR_RECAL)
+-		drive->special.b.recalibrate = 1;
+-
+-	++rq->errors;
+-
+ 	return ide_stopped;
+ }
+ 
+@@ -1028,13 +1025,6 @@ static ide_startstop_t start_request (ide_drive_t *drive, struct request *rq)
+ 	if (!drive->special.all) {
+ 		ide_driver_t *drv;
+ 
+-		/*
+-		 * We reset the drive so we need to issue a SETFEATURES.
+-		 * Do it _after_ do_special() restored device parameters.
+-		 */
+-		if (drive->current_speed == 0xff)
+-			ide_config_drive_speed(drive, drive->desired_speed);
+-
+ 		if (rq->cmd_type == REQ_TYPE_ATA_CMD ||
+ 		    rq->cmd_type == REQ_TYPE_ATA_TASK ||
+ 		    rq->cmd_type == REQ_TYPE_ATA_TASKFILE)
+diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
+index 133d9cd..59b10a0 100644
+--- a/drivers/ide/ide-iops.c
++++ b/drivers/ide/ide-iops.c
+@@ -1123,9 +1123,6 @@ static void pre_reset(ide_drive_t *drive)
+ 	if (HWIF(drive)->pre_reset != NULL)
+ 		HWIF(drive)->pre_reset(drive);
+ 
+-	if (drive->current_speed != 0xff)
+-		drive->desired_speed = drive->current_speed;
+-	drive->current_speed = 0xff;
+ }
+ 
+ /*
+diff --git a/include/linux/ide.h b/include/linux/ide.h
+index 63e111e..3808698 100644
+--- a/include/linux/ide.h
++++ b/include/linux/ide.h
+@@ -607,7 +607,6 @@ typedef struct ide_drive_s {
+         u8	init_speed;	/* transfer rate set at boot */
+         u8	pio_speed;      /* unused by core, used by some drivers for fallback from DMA */
+         u8	current_speed;	/* current transfer rate set */
+-	u8	desired_speed;	/* desired transfer rate set */
+         u8	dn;		/* now wide spread use */
+         u8	wcache;		/* status of write cache */
+ 	u8	acoustic;	/* acoustic management */

Modified: dists/sid/linux-2.6/debian/patches/series/2
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/2	(original)
+++ dists/sid/linux-2.6/debian/patches/series/2	Sat Apr 14 17:03:20 2007
@@ -1,2 +1,4 @@
 - features/mips/sb1-duart.patch
 + bugfix/all/stable/2.6.20.7.patch
++ bugfix/all/stable/2.6.20.7-abi-1.patch
++ bugfix/all/stable/2.6.20.7-abi-2.patch



More information about the Kernel-svn-changes mailing list