[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